2011-05-18 51 views
0

我正在开发一个相当流程饥饿的应用程序,我需要拍摄一张图像并在每次按下按钮时保存它。在按下按钮时,我触发相机对象的setOneShotPreviewCallback()方法,以获得表示当时图像的byte[]。在此之后,我将这个byte[]并使用在处理器上非常沉重的YUVImage对象将其转换为位图。为了减少这种利用我裁剪图像:相机对象上的setOneShotPreviewCallback(),预览的裁剪版本图片

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

我不明白,这部分 “在按下按钮,我触发'setOneShotPreviewCallback()'”。它是一个回调,你不能触发它..而我不认为它在你实际执行捕捉时给你正确的原始图像。回调可以随时调用..请参阅文档[这里](http://developer.android.com/reference/android/hardware/Camera.html#setOneShotPreviewCallback(android.hardware.Camera.PreviewCallback)) – bluefalcon 2011-05-20 10:55:21

回答

1

尝试建立PreviewFormat:

parameters.setPreviewFormat(ImageFormat.JPEG);