3

我正在尝试使用 android 在我的 Nexus 5x 上工作,Camera2 APIs我正在使用googlesamples android-Camera2Basic

我的问题是 JPEG 图像的质量太低,而且它们的尺寸比我用手机相机应用程序拍摄的常规图像要小得多。

根据谷歌文档,JPEG_QUALITY在 CaptureRequest 和 CaptureResult 中都应该有一个键:

JPEG_QUALITY

在 API 级别 21 中添加

密钥 JPEG_QUALITY

最终 JPEG 图像的压缩质量。

85-95 是典型的使用范围。

有效值范围:

1-100; 越大质量越高

此密钥适用于所有设备。

但是,当我询问可用密钥时,JPEG_QUALITY密钥不可用,所以我不知道我当前JPEG使用的压缩质量是什么以及如何更改它。

我在里面做的代码:

CameraCaptureSession.CaptureCallback CaptureCallback
                = new CameraCaptureSession.CaptureCallback() {

            @Override
            public void onCaptureCompleted(@NonNull CameraCaptureSession session,
                                           @NonNull CaptureRequest request,
                                           @NonNull TotalCaptureResult result) {

               
                //_TEST_DEBUG
                List<CaptureRequest.Key<?>> requestKeys = request.getKeys();
                List<CaptureResult.Key<?>> resultKeys = result.getKeys();

requestKeys & resultKeys 有很多键,包括JPEG_ORIENTATION但不包括JPEG_QUALITY键。

知道我在做什么错吗?为什么我找不到如何更改JPEG压缩质量?

谢了,兄弟们

4

1 回答 1

8

我通过在 Android 5.1 Lollipop 上使用 Tesco Hudl 2 平板电脑将其作为键添加到 googlesamples android-Camera2Basic 中的 CaptureRequest.Builder 来提高 JPEG 质量。

JPEG 质量在 Camer2BasicFragment 的 captureStillPicture() 方法中设置,如下所示:

        // This is the CaptureRequest.Builder that we use to take a picture.
        final CaptureRequest.Builder captureBuilder =
                mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE);
        captureBuilder.addTarget(mImageReader.getSurface());

        //Set the JPEG quality here like so
        captureBuilder.set(CaptureRequest.JPEG_QUALITY, (byte)90);

我希望这有帮助。

于 2016-06-30T15:28:49.927 回答