Estou aprendendo o CameraX e o CameraXBasic é um código de exemplo.
Escrevo uma função zoomX baseada em CameraFragment.kt . você pode ver o código A. Acho que a função pode ampliar uma imagem a qualquer momento.
Acho que uma imagem pode ser zoom in quando eu invocá-lo com sa pequeno valor, como zoomX(2f)
, zoomX(3f)
, mas a imagem não será zoom in novamente quando eu uso um grande valor, 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
HelloCW
fonte
fonte
CameraControl.setZoomPercentage()
fromandroidx.camera.camera-core:1.0.0-alpha01
CameraControl.setZoomPercentage()
? Não consigo encontrar mais documentos e códigos de amostra.alpha07
qual ainda não foi lançado. android.googlesource.com/platform/frameworks/support/+/… A versão mais recente éalpha06
Respostas:
Isto não é uma questão de tradição, mas de
Futures
. A atualização desse exemplo de CameraXBasic de1.0.0-alpha06
para1.0.0-alpha08
quebra muito, mas o CameraX CameraControl apresenta esses dois métodos:ListenableFuture<Void> setLinearZoom (float linearZoom)
ListenableFuture<Void> setZoomRatio (float ratio)
Veja também Executor e também há
CameraXExecutors
.Veja também as notas de versão ou as confirmações ... para todas as alterações na API, que quebram o exemplo CameraXBasic. Não explicarei mais essas diferenças de API (já que essa não era a questão), mas a bifurquei ; consulte as edições # 131 (até agora, pelo menos a visualização funciona lá).
É assim que realmente funciona:
Proporções de zoom de
1.0f
até o8.0f
trabalho no meu Motorola XT1900:fonte
É uma tradição do Android, o nível de zoom existe entre
0
e1
como muitos outros valores.0
significa o menor nível de zoom.1
significa o nível máximo de zoom.É um valor flutuante para que você aumentá-lo como
0.1
,0.2
,0.9
e assim por diante.fonte
Primeiro de tudo, descubra o valor máximo de zoom da câmera - usando o
getMaxZoom()
método.https://developer.android.com/reference/android/hardware/Camera.Parameters.html#getMaxZoom ()
Se você usou a Visualização da câmera, pode definir o zoom na Visualização da câmera usando
Rect
. Como abaixo -Você pode obter mais detalhes aqui - Zoom de visualização da câmera Android usando o toque duplo do dedo
fonte