Android onpreviewframe:图像视图预览在平板电脑上显示绿色/粉红色图像

时间:2014-02-13 14:16:47

标签: android image-processing android-camera android-ui

我需要从相机预览并在Imageview上显示.. 代码完成如下

public void onPreviewFrame(byte[] data, Camera camera){
        yuvimage = new YuvImage(data, parameters.getPreviewFormat(), width, height, null);
        yuvimage.compressToJpeg(new Rect(0,0,parameters.getPreviewSize().width,parameters.getPreviewSize().height), 90, outstr);
        bmp = BitmapFactory.decodeByteArray(outstr.toByteArray(), 0, outstr.size());        
        camera.addCallbackBuffer(data);
    }

此代码工作正常,if bmp传递给imageview,它在大多数设备上显示清晰的彩色图像,但在平板电脑上,它显示绿色/粉红色图像.. 如果使用surfaceview直接显示预览,则会在所有设备上显示清晰的颜色预览..

任何建议都表示赞赏..

1 个答案:

答案 0 :(得分:0)

如果图像看起来有点正确,但只是有一种奇怪的颜色,那么我猜 问题在于图片格式。我会开始尝试将parameters.getPreviewFormat()更改为ImageFormat.NV21并查看是否可以解决问题。

之前我使用过基本相同的代码,从来没有遇到过问题。 (尽管您应该将渲染推送到单独的线程,并且可能使用RenderScript来转换图片)。