【发布时间】:2023-03-31 22:55:01
【问题描述】:
我正在开发一个相当耗时的应用程序,每次按下按钮时我都需要拍摄图像并保存它。按下按钮时,我触发相机对象的setOneShotPreviewCallback() 方法以获取代表当时图像的byte[]。在此之后的那一刻,我使用这个byte[] 并使用处理器上非常重的 YUVImage 对象将其转换为位图。为了减少这种情况,我使用以下方法裁剪图像:
Rect rect = new Rect(4*w/10, 0, 9*w/10, h);
final ByteArrayOutputStream output_stream = new ByteArrayOutputStream();
yuv_image.compressToJpeg(rect, 100, output_stream);
我想知道我是否可以只使用byte[] 而不必将其转换为 YUV 图像?就像在触发回调之前创建了 Rect 并且 byte[] 仅填充了该 Rect 内的图像数据?
【问题讨论】:
-
我不明白这部分“按下按钮我触发
setOneShotPreviewCallback()”。它是一个回调,你不能触发它。我认为当你实际执行捕获时它不会给你正确的原始图像。可以随时调用回调。请参阅文档here
标签: java android camera bytearray android-camera