小编Pit*_*itr的帖子

OnPreviewFrame数据图像到imageView

我试图从相机的预览中获取byte [],将其转换为位图并使用imageView.setImageBitmap()在imageview上显示它

我已经设法开始预览并将其显示在surfaceView上,但我不知道如何在RGB位图中转换byte []数据(我认为是Yuv格式)以在imageView上显示它.

我正在尝试的代码如下:

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();
Run Code Online (Sandbox Code Playgroud)

并且预览回调就是这个

@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);        
}
Run Code Online (Sandbox Code Playgroud)

预览有效但imageView仍为空

任何的想法?

android bitmap yuv android-camera

6
推荐指数
1
解决办法
2万
查看次数

标签 统计

android ×1

android-camera ×1

bitmap ×1

yuv ×1