我已经创建了一个自定义camera2
Android应用程序,它应该拍摄4160 x 3120的图像并保存到文件中。这是我的代码:
Image img = reader.acquireLatestImage();
if (img != null) {
ByteBuffer imgBuffer = img.getPlanes()[0].getBuffer();
imgBuffer.rewind();
final byte[] bytes = new byte[imgBuffer.capacity()];
imgBuffer.get(bytes);
saveImage(bytes);
img.close();
}
但我遇到的问题是,虽然我正在接收具有正确分辨率并保存的图像(img
具有所需高度和宽度的对象),它的分辨率很低。我怀疑的是imageBuffer
能力导致了这个问题。
设置相机时,我按如下方式初始化实例(使用最大分辨率):
ImageReader.newInstance(largest.getWidth(), largest.getHeight(), ImageFormat.JPEG, 2 );
在创建捕获请求时,我使用以下代码:
final CaptureRequest.Builder captureBuilder = cameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE);
captureBuilder.addTarget(imageReader.getSurface());
captureBuilder.set(CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_MODE_AUTO);
captureBuilder.set(CaptureRequest.JPEG_ORIENTATION, 0);
captureBuilder.set(CaptureRequest.JPEG_QUALITY, (byte)100);