我需要从相机预览并在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直接显示预览,则会在所有设备上显示清晰的颜色预览..
任何建议都表示赞赏..
答案 0 :(得分:0)
如果图像看起来有点正确,但只是有一种奇怪的颜色,那么我猜 问题在于图片格式。我会开始尝试将parameters.getPreviewFormat()更改为ImageFormat.NV21并查看是否可以解决问题。
之前我使用过基本相同的代码,从来没有遇到过问题。 (尽管您应该将渲染推送到单独的线程,并且可能使用RenderScript来转换图片)。