【发布时间】:2013-11-30 09:37:41
【问题描述】:
我正在尝试从相机的预览中获取字节[],将其转换为位图并使用 imageView.setImageBitmap() 将其显示在图像视图上
我已经设法开始预览并将其显示在 SurfaceView 上,但我不知道如何在 RGB 位图中转换 byte[] 数据(我认为是 Yuv 格式)以将其显示在图像视图。
我正在尝试的代码如下:
camera = camera.open();
parameters = camera.getParameters();
camera.setParameters(parameters);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
camera.setPreviewDisplay(surfaceHolder);
camera.setPreviewCallback(this);
camera.startPreview();
预览回调是这样的
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
Camera.Parameters parameters = camera.getParameters();
int width = parameters.getPreviewSize().width;
int height = parameters.getPreviewSize().height;
ByteArrayOutputStream outstr = new ByteArrayOutputStream();
Rect rect = new Rect(0, 0, width, height);
YuvImage yuvimage=new YuvImage(data,ImageFormat.NV21,width,height,null);
yuvimage.compressToJpeg(rect, 100, outstr);
Bitmap bmp = BitmapFactory.decodeByteArray(outstr.toByteArray(), 0, outstr.size());
imgView1.setImageBitmap(bmp);
}
预览有效,但 imageView 仍然为空
有什么想法吗?
【问题讨论】:
-
在哪里设置 imageView.setImageBitmap(bmp); ?
-
位图后 bmp = BitmapFactory.decodeByteArray(outstr.toByteArray(), 0, outstr.size());
-
确保 outstr.size()!=0!!?
-
对不起,回答晚了...但是,我应该如何检查?
-
查看 outstr.length() 或其他函数以检查文档中 ByteArrayOutputStream 类中的大小
标签: android bitmap android-camera yuv