【发布时间】:2019-06-19 13:36:58
【问题描述】:
我正在尝试使用 Camera2 api 实现自定义大小的相机视图(预览和捕获)。特别是 4:3 的比例,但横向预览(宽度 > 高度)。
到目前为止,我能够获得正确的 TextureView 大小但预览被垂直挤压,或者正确的预览但 TextureView 大小超出了所需的容器大小。
尝试使用以下代码设置SCALER_CROP_REGION,但没有效果。
val sensorRect = cameraCharacteristics
.get(CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE)
?: return@run
val sensorWidth = sensorRect.width()
val sensorToViewRatio = sensorWidth / preview.width.toFloat()
val sensorBottom = (preview.height * sensorViewRatio).roundToInt() + sensorRect.top
previewRequestBuilder.set(
CaptureRequest.SCALER_CROP_REGION,
Rect(sensorRect.left, sensorRect.top, sensorRect.right, sensorBottom)
)
还尝试了textureView.setTransform(matrix) 与setRectToRect 和postScale,但没有运气。这裁剪了预览表面本身,但实际预览仍然被挤压。
实现这种自定义预览和捕获大小的正确和推荐方法是什么?
我正在使用google's CameraView library 的增强版。
我正在开发的库 CameraViewEx 代码库可以在 here 找到。
以下是可能与实现预期行为相关的类。
【问题讨论】:
标签: android kotlin android-camera android-camera2