Camera1和Camera2之间的缩放级别差异

时间:2018-07-30 18:44:56

标签: android android-camera2

在我们的应用程序中,我们同时支持Camera和Camera2 API进行拍照。我注意到的是,两种API的放大深度都不同。

使用Camera1 API,设置缩放级别非常简单:

Camera.Paramenters params = mCamera.getParameters();
params.setZoom(zoomLevel);
mCamera.setParameters(params);

使用Camera2 API,缩放级别设置如下(为标准Camera2示例应用程序采用的代码):

final int zoomScale = 200;
captureBuilder.set(CaptureRequest.SCALER_CROP_REGION, new
     Rect(zoomScale * mZoomLevel, zoomScale * mZoomLevel, mStartBounds.right
     - (zoomScale * mZoomLevel), mStartBounds.bottom - (zoomScale * mZoomLevel)));

我正在使用的Android设备的最大缩放值为4。在缩放级别4上,Camera1的放大程度似乎比Camera2大得多(至少10%)。

我想知道我是在计算中遗漏了某些东西还是仅仅是Camera2 API的设计方式。问候。

1 个答案:

答案 0 :(得分:0)

我不确定如何为zoomScale选择值200。 camera2的裁剪区域位于传感器active array的坐标中,因此,如果要进行2倍缩放,则需要将矩形设置为活动数组的宽度和高度的一半。

大致的示例代码:

Configuration