我正在开发一个相当流程的应用程序,我需要拍摄图像并在每次按下按钮时保存它。在按下按钮时,我触发相机对象的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中的图像数据?
答案 0 :(得分:1)
尝试设置PreviewFormat:
parameters.setPreviewFormat(ImageFormat.JPEG);