Saya memiliki bitmap yang kotak atau persegi panjang. Saya mengambil sisi terpendek dan melakukan sesuatu seperti ini:
int value = 0;
if (bitmap.getHeight() <= bitmap.getWidth()) {
value = bitmap.getHeight();
} else {
value = bitmap.getWidth();
}
Bitmap finalBitmap = null;
finalBitmap = Bitmap.createBitmap(bitmap, 0, 0, value, value);
Kemudian saya skalakan menjadi 144 x 144 Bitmap menggunakan ini:
Bitmap lastBitmap = null;
lastBitmap = Bitmap.createScaledBitmap(finalBitmap, 144, 144, true);
Masalahnya adalah ia memotong sudut kiri atas bitmap asli, Adakah yang punya kode untuk memotong bagian tengah bitmap?
100x1000
gambar, Anda mendapatkan kembali100x550
gambar.Sementara sebagian besar jawaban di atas menyediakan cara untuk melakukan ini, sudah ada cara bawaan untuk mencapai ini dan ini 1 baris kode (
ThumbnailUtils.extractThumbnail()
)Jika Anda ingin objek bitmap didaur ulang, Anda bisa meneruskan opsi yang membuatnya:
Dari: Dokumentasi ThumbnailUtils
Saya keluar dari kesalahan memori kadang-kadang ketika menggunakan jawaban yang diterima, dan menggunakan ThumbnailUtils menyelesaikan masalah tersebut untuk saya. Plus, ini jauh lebih bersih dan lebih dapat digunakan kembali.
sumber
Sudahkah Anda mempertimbangkan untuk melakukan ini dari
layout.xml
? Anda bisa mengatur untuk AndaImageView
yang ScaleType untukandroid:scaleType="centerCrop"
dan mengatur dimensi gambar diImageView
dalamlayout.xml
.sumber
Anda dapat menggunakan kode berikut yang dapat memecahkan masalah Anda.
Metode di atas melakukan postScalling gambar sebelum memotong, sehingga Anda bisa mendapatkan hasil terbaik dengan gambar yang dipangkas tanpa mendapatkan kesalahan OOM.
Untuk lebih jelasnya Anda bisa mereferensikan blog ini
sumber
Di sini, potongan yang lebih lengkap yang memangkas bagian tengah suatu [bitmap] dimensi arbitrer dan menskala hasilnya ke [IMAGE_SIZE] yang Anda inginkan . Jadi, Anda akan selalu mendapatkan persegi skala [croppedBitmap] dari pusat gambar dengan ukuran tetap. ideal untuk thumbnail dan semacamnya.
Ini kombinasi yang lebih lengkap dari solusi lain.
sumber
Mungkin solusi termudah sejauh ini:
impor:
sumber
Untuk memperbaiki solusi @willsteel:
sumber
sumber
sumber