Ich lerne CameraX und CameraXBasic ist ein Beispielcode.
Ich schreibe eine zoomX-Funktion basierend auf CameraFragment.kt . Sie können den Code A sehen. Ich denke, die Funktion kann ein Bild jederzeit vergrößern.
Ich finde , dass ein Bild mit sa kleinen Wert , wenn ich invoke es seinen Zoom kann, wie zum Beispiel zoomX(2f)
, zoomX(3f)
aber das Bild wird nicht wieder seinen Zoom , wenn ich einen großen Wert wie verwenden zoomX(6.0f)
, zoomX(7.0f)
... warum?
Code 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
HalloCW
quelle
quelle
CameraControl.setZoomPercentage()
vonandroidx.camera.camera-core:1.0.0-alpha01
CameraControl.setZoomPercentage()
? Ich kann keinen weiteren Dokument- und Beispielcode finden.alpha07
dem noch nicht veröffentlicht ist. android.googlesource.com/platform/frameworks/support/+/… Die neueste Version istalpha06
Antworten:
Dies ist keine Frage der Tradition, sondern von
Futures
. Das Aktualisieren dieses CameraXBasic- Beispiels von1.0.0-alpha06
auf1.0.0-alpha08
bricht viel ab, aber CameraX CameraControl bietet diese beiden Methoden:ListenableFuture<Void> setLinearZoom (float linearZoom)
ListenableFuture<Void> setZoomRatio (float ratio)
Siehe auch Executor und es gibt auch
CameraXExecutors
.Siehe auch die Release Notes oder die Commits ... für alle die API - Änderungen, die das CameraXBasic Beispiel brechen. Ich werde diese API-Unterschiede nicht mehr erklären (da dies nicht die Frage war), habe sie aber gegabelt . siehe Ausgabe Nr. 131 (bisher funktioniert dort zumindest die Vorschau).
So funktioniert es tatsächlich:
Zoomverhältnisse von
1.0f
bis zur8.0f
Arbeit an meinem Motorola XT1900:quelle
Es ist eine Android-Tradition, Zoomstufen existieren zwischen
0
und1
wie viele andere Werte.0
bedeutet die niedrigste Zoomstufe.1
bedeutet die maximale Zoomstufe.Es ist ein Float - Wert , so dass Sie es wie erhöhen
0.1
,0.2
,0.9
und so weiter.quelle
Ermitteln Sie zunächst den maximalen Zoomwert der Kamera mithilfe der
getMaxZoom()
Methode.https://developer.android.com/reference/android/hardware/Camera.Parameters.html#getMaxZoom ()
Wenn Sie die Kameravorschau verwendet haben, können Sie den Zoom in der Kameravorschau mithilfe von einstellen
Rect
. Wie unten -Weitere Informationen erhalten Sie hier - Vorschau-Zoom für Android-Kameras mit Doppelfinger-Berührung
quelle