Ada pernyataan di android canvas.drawBitmap(visiblePage, 0, 0, paint);
Saat saya tambahkan canvas.rotate(90)
, tidak ada efek. Tetapi jika saya menulis
canvas.rotate(90)
canvas.drawBitmap(visiblePage, 0, 0, paint);
Saya tidak mendapatkan bitmap yang ditarik. Jadi apa yang tidak saya lakukan dengan benar?
Jawaban:
Anda juga bisa mencoba yang ini
Kemudian Anda dapat menggunakan gambar yang diputar untuk diatur dalam tampilan gambar Anda
sumber
bitmap.recycle()
untuk memastikan.Untuk mendapatkan Bitmap dari sumber daya:
sumber
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.
Ekstensi pendek untuk Kotlin
Dan penggunaan:
sumber
Di bawah ini adalah kode untuk memutar atau mengubah ukuran gambar Anda di android
Anda juga dapat memeriksa tautan ini untuk detailnya: http://www.anddev.org/resize_and_rotate_image_-_example-t621.html
sumber
Secara default, titik rotasi adalah titik Canvas (0,0), dan perkiraan saya adalah Anda mungkin ingin memutarnya di sekitar tengah. Saya melakukan itu:
sumber
Saya akan lebih menyederhanakan fungsi ekstensi Kotlin dari comm1x :
sumber
Menggunakan
createBitmap()
metode Java, Anda dapat memberikan derajat.sumber
Jika Anda memutar bitmap, 90 180270360 tidak apa-apa, tetapi untuk derajat lainnya kanvas akan menggambar bitmap dengan ukuran berbeda.
Jadi, cara terbaik adalah
sumber
Jika tujuan Anda adalah memiliki gambar yang diputar dalam imageView atau file, Anda dapat menggunakan Exif untuk mencapainya. Pustaka dukungan sekarang menawarkan itu: https://android-developers.googleblog.com/2016/12/introducing-the-exifinterface-support-library.html
Di bawah ini adalah penggunaannya tetapi untuk mencapai tujuan Anda, Anda harus memeriksa dokumentasi api perpustakaan untuk itu. Saya hanya ingin memberi petunjuk bahwa memutar bitmap tidak selalu merupakan cara terbaik.
ketergantungan
sumber
Berhati-hatilah dengan jenis Bitmap dari panggilan platform java seperti dari jawaban comm1x dan Gnzlt , karena mungkin mengembalikan null. Menurut saya juga lebih fleksibel jika parameternya bisa berupa Angka apa saja dan menggunakan infix agar mudah dibaca, tergantung gaya pengkodean Anda.
Cara Penggunaan?
sumber