OnPreviewFrame数据图像到imageView

 幸福欧旭旭_320 发布于 2023-02-13 17:48

我试图从相机的预览中获取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();

并且预览回调就是这个

@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仍为空

任何的想法?

1 个回答
  • 您可能没有在UI线程中打开相机.但是,您需要确保在UI线程中调用setImageBitmap:

    @Override
    public void onPreviewFrame(final byte[] data, Camera camera) {
        Camera.Parameters parameters = camera.getParameters();
        int width = parameters.getPreviewSize().width;
        int height = parameters.getPreviewSize().height;
    
        YuvImage yuv = new YuvImage(data, parameters.getPreviewFormat(), width, height, null);
    
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        yuv.compressToJpeg(new Rect(0, 0, width, height), 50, out);
    
        byte[] bytes = out.toByteArray();
        final Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
    
        MyActivity.this.runOnUiThread(new Runnable() {
    
            @Override
            public void run() {
                ((ImageView) findViewById(R.id.loopback)).setImageBitmap(bitmap);
            }
        });
    }
    

    2023-02-13 17:50 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有