Es gibt eine Aussage in Android canvas.drawBitmap(visiblePage, 0, 0, paint);
Wenn ich hinzufüge canvas.rotate(90)
, gibt es keine Wirkung. Aber wenn ich schreibe
canvas.rotate(90)
canvas.drawBitmap(visiblePage, 0, 0, paint);
Ich bekomme keine Bitmap gezeichnet. Also, was mache ich nicht richtig?
Antworten:
Sie können diesen auch ausprobieren
Dann können Sie das gedrehte Bild verwenden, um in Ihrer Bildansicht durch zu setzen
quelle
bitmap.recycle()
an, um sicherzugehen.So erhalten Sie Bitmap aus Ressourcen:
quelle
If the source bitmap is immutable and the requested subset is the same as the source bitmap itself, then the source bitmap is returned and no new bitmap is created.
Kurze Verlängerung für Kotlin
Und Verwendung:
quelle
Unten ist der Code zum Drehen oder Ändern der Größe Ihres Bildes in Android
Sie können diesen Link auch auf Details überprüfen: http://www.anddev.org/resize_and_rotate_image_-_example-t621.html
quelle
Standardmäßig ist der Drehpunkt der (0,0) Punkt der Leinwand, und ich vermute, dass Sie ihn um die Mitte drehen möchten. Ich habe das gemacht:
quelle
Ich würde vereinfachen comm1x ‚s Kotlin Erweiterungsfunktion noch mehr:
quelle
Mit der Java-
createBitmap()
Methode können Sie die Abschlüsse übergeben.quelle
Wenn Sie die Bitmap drehen, ist 90 180 270 360 in Ordnung, aber für andere Grade zeichnet die Leinwand eine Bitmap mit unterschiedlicher Größe.
Der beste Weg ist also
quelle
Wenn Sie ein gedrehtes Bild in einer imageView oder Datei haben möchten, können Sie dies mit Exif erreichen. Die Support-Bibliothek bietet nun Folgendes: https://android-developers.googleblog.com/2016/12/introducing-the-exifinterface-support-library.html
Nachfolgend finden Sie die Verwendung. Um Ihr Ziel zu erreichen, müssen Sie jedoch die API-Dokumentation der Bibliothek überprüfen. Ich wollte nur einen Hinweis geben, dass das Drehen der Bitmap nicht immer der beste Weg ist.
Abhängigkeit
quelle
Achten Sie nur auf den Bitmap-Typ aus dem Java-Plattformaufruf wie aus den Antworten von comm1x und Gnzlt , da er möglicherweise null zurückgibt . Ich denke, es ist auch flexibler, wenn der Parameter eine beliebige Zahl sein kann und Infix für die Lesbarkeit verwendet, abhängig von Ihrem Codierungsstil.
Wie benutzt man?
quelle