我尝试,但是当我按下“捕获”按钮并且没有创建图像时,预览冻结。有什么建议吗? 一个Camera2项目可以使用多少个ImageReader?
答案 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();
}