Как увеличить предварительный просмотр с помощью библиотеки Android CameraX?

Я надеюсь добавить функцию увеличения изображения предварительного просмотра (см. Изображение A) для примера кода на https://github.com/android/camera/tree/master/CameraXBasic

Я прочитал статью, но следующий код не работает. Как увеличить предварительный просмотр с помощью CameraX API 1.0.0-alpha05?

CameraFragment.kt

 /** Declare and bind preview, capture and analysis use cases */
    private fun bindCameraUseCases() {

       ...

        // Apply declared configs to CameraX using the same lifecycle owner
        CameraX.bindToLifecycle(
                viewLifecycleOwner, preview, imageCapture, imageAnalyzer)

       //I added code
        var my=Rect(0,0,500,500)
        preview.zoom(my)
    }

Изображение А

1 ответ

Решение

@HelloCW, вы делаете правильные вещи, я могу увеличивать / уменьшать масштаб с помощью этого кода

button_plus.setOnClickListener {
    if (right < 100) {
        right += 100
        bottom += 100
        left += 100
        top += 100
        val my = Rect(left, top, right, bottom)
        preview.zoom(my)
    }
}

button_minus.setOnClickListener {
    if (right > 0) {
        right -= 100
        bottom -= 100
        left -= 100
        top -= 100
        val my = Rect(left, top, right, bottom)
        preview.zoom(my)
    }
}

Вот результат https://i.s tack.imgur.com/F1AfP.jpg

Обновить:

 private fun startCamera() {
        val metrics = DisplayMetrics().also { view_finder.display.getRealMetrics(it) }
        val screenAspectRatio = Rational(metrics.widthPixels, metrics.heightPixels)
        val previewConfig = PreviewConfig.Builder().apply {
            setTargetAspectRatio(screenAspectRatio)
            setTargetRotation(view_finder.display.rotation)
        }.build()
        // Build the viewfinder use case
        preview = Preview(previewConfig)
        preview.setOnPreviewOutputUpdateListener {
            // To update the SurfaceTexture, we have to remove it and re-add it
            val parent = view_finder.parent as ViewGroup
            parent.removeView(view_finder)
            parent.addView(view_finder, 0)
            view_finder.surfaceTexture = it.surfaceTexture
            updateTransform()
        }
        CameraX.bindToLifecycle(this, preview)
    }
Другие вопросы по тегам