在Android Camera2 API中。我可以使用图像读取器(YUV_420_888)进行处理,而可以使用另一个(JPEG)捕获静止图像吗?

时间:2019-02-18 10:46:10

标签: jpeg android-camera2 yuv image-reader

我尝试,但是当我按下“捕获”按钮并且没有创建图像时,预览冻结。有什么建议吗? 一个Camera2项目可以使用多少个ImageReader?

1 个答案:

答案 0 :(得分:0)

对于您创建的每个CaptureSession,您只能拥有一个ImageReader。如果要为每种图像类型使用两个不同的ImageReader,则应使用两个CaptureSession。但是您必须非常小心两个会话之间的相机资源处理(例如,在启动其他CaptureSession捕获YUV_420_888图像之前,应关闭ImageReader for JPEG)。在设备上使用多个CaptureSession也很麻烦,通常不建议这样做。代替 您可以为两种类型的图像使用相同的字节。

public void onImageAvailable(ImageReader imageReader) {
            byte[] bytes = null;
            Image image = imageReader.acquireLatestImage();
            try {

                ByteBuffer buffer = image.getPlanes()[0].getBuffer();
                bytes = new byte[buffer.capacity()];
                buffer.get(bytes);
                //use the bytes to manipulate
            } catch (Exception e) {
                e.printStackTrace();
            }
            image.close();
            imageReader.close();

        }