CameraX zoom контролирует обрезку реальной фотографии - PullRequest
0 голосов
/ 30 сентября 2019

Я использую 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,не могли бы вы предоставить его?).

Есть ли способ увеличить изображение предварительного просмотра, но на самом деле сделать полноразмерную фотографию увеличенного изображения?

Спасибо.

...