使用输入分辨率保存图像

时间:2017-09-19 04:32:41

标签: android android-camera2

我已经创建了一个自定义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);

0 个答案:

没有答案