Estoy aprendiendo CameraX, y CameraXBasic es un código de muestra.
Escribo una función zoomX basada en CameraFragment.kt . puede ver el Código A. Creo que la función puede ampliar una imagen en cualquier momento.
Me parece que una imagen puede ser zoom en cuando me lo debe invocar con sa pequeño valor, tales como zoomX(2f)
, zoomX(3f)
pero la imagen no será ampliar de nuevo cuando se utiliza un gran valor tales como zoomX(6.0f)
, zoomX(7.0f)
... ¿por qué?
Código A
private lateinit var viewFinder: TextureView
private var preview: Preview? = null
fun zoomX(orign: Float ){
val x=orign+1
val singleWidth=viewFinder.width/x
val singleHeight=viewFinder.height/x
val left=viewFinder.width/2f-singleWidth/2f
val right=left+singleWidth
val top=viewFinder.height/2f-singleHeight/2f
val bottom=top+singleHeight
val my= Rect(left.toInt(), top.toInt(), right.toInt(), bottom.toInt())
preview?.zoom(my)
}
android
kotlin
zoom
android-camerax
HolaCW
fuente
fuente
CameraControl.setZoomPercentage()
desdeandroidx.camera.camera-core:1.0.0-alpha01
CameraControl.setZoomPercentage()
? No puedo encontrar más documentos y código de muestra.alpha07
que aún no se ha lanzado. android.googlesource.com/platform/frameworks/support/+/… La última versión esalpha06
Respuestas:
Esto no es una cuestión de tradición, sino de
Futures
. La actualización que CameraXBasic ejemplo, de1.0.0-alpha06
que1.0.0-alpha08
se rompe mucho, pero CameraX CameraControl características de estos dos métodos:ListenableFuture<Void> setLinearZoom (float linearZoom)
ListenableFuture<Void> setZoomRatio (float ratio)
También vea Ejecutor y también hay
CameraXExecutors
.También vea las notas de la versión o las confirmaciones ... para todos los cambios de API, que rompen el ejemplo de CameraXBasic. No explicaré más de estas diferencias de API (ya que esta no era la pregunta), pero la bifurqué ; vea los problemas # 131 (hasta ahora, al menos la vista previa funciona allí).
Así es como funciona realmente:
Relaciones de zoom desde
1.0f
hasta el8.0f
trabajo en mi Motorola XT1900:fuente
Es una tradición de Android, existe un nivel de zoom entre
0
y1
como muchos otros valores.0
significa el nivel de zoom más bajo.1
significa el nivel máximo de zoom.Es un valor de coma flotante por lo que se aumenta como
0.1
,0.2
,0.9
y así sucesivamente.fuente
En primer lugar, descubra el valor máximo de zoom de la cámara, utilizando el
getMaxZoom()
método.https://developer.android.com/reference/android/hardware/Camera.Parameters.html#getMaxZoom ()
Si ha usado Vista previa de la cámara, puede configurar el zoom en Vista previa de la cámara usando
Rect
. Como abajo -Puede obtener más detalles desde aquí: zoom de la vista previa de la cámara de Android con solo tocar dos dedos
fuente