Я пытаюсь добиться нестандартного размера камеры (предварительный просмотр и захват) с помощью 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 CameraView Library .
Библиотека CameraViewEx кодовая база, над которой я работаю, может быть найдена здесь .
Ниже приведены классы, которые могут иметь отношение к достижению предполагаемого поведения.