在我们的应用程序中,我们同时支持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的设计方式。问候。
答案 0 :(得分:0)
我不确定如何为zoomScale选择值200。 camera2的裁剪区域位于传感器active array的坐标中,因此,如果要进行2倍缩放,则需要将矩形设置为活动数组的宽度和高度的一半。
大致的示例代码:
Configuration