Я использую CameraX с элементами управления масштабированием, но у меня возникают проблемы с обрезкой окончательного снимка до предварительного просмотра (на основе этого ответа здесь )
val cameraId = getCameraId()
val characteristics = getCameraCharacteristics(cameraId)
val maxZoom = getMaxZoom(cameraId)
zoomControls.max = maxZoom!! * 5
zoomControls.incrementProgressBy(1)
zoomControls.setOnSeekBarChangeListener(object: SeekBar.OnSeekBarChangeListener {
override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
//Not implemented
}
override fun onStartTrackingTouch(seekBar: SeekBar?) {
//Not implemented
}
override fun onStopTrackingTouch(seekBar: SeekBar?) {
seekBar?.let { zoomProgress ->
val progress = zoomProgress.progress
val rect = characteristics.get(CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE)
rect?.let { rect ->
val rectW = rect.width()
val rectH = rect.height()
val minW = (rectW / maxZoom)
val minH = (rectH / maxZoom)
val difW = rectW - minW
val difH = rectH - minH
var cropW = difW /100 * progress
var cropH = difH /100 * progress
cropW -= cropW and 3
cropH -= cropH and 3
val right = rectW - cropW
val bottom = rectH - cropH
val zoom = Rect(cropW, cropH, right, bottom)
imagePreview.zoom(zoom)
}
}
}
})
IЗнайте, что в будущем CameraControl
будет реализовывать эту функцию масштабирования, но я не думаю, что это произойдет на момент написания этого вопроса (если это так, и у вас есть документация о том, как реализовать масштабирование с помощью CameraControl
,не могли бы вы предоставить его?).
Есть ли способ увеличить изображение предварительного просмотра, но на самом деле сделать полноразмерную фотографию увеличенного изображения?
Спасибо.