-1

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

4

1 回答 1

0

对于您创建的每个 CaptureSession,您只能拥有一个 ImageReader。如果您想为每种类型的 Image 使用两个不同的 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();

        }
于 2019-02-21T09:12:04.500 回答