Di Android, karena keragaman ponsel dengan piksel yang berbeda, untuk sebuah gambar, akan ada perbedaan dalam tampilan ponsel yang berbeda karena piksel yang berbeda.
Ada persyaratan untuk mengisi seluruh layar dengan lebar gambar dan menampilkannya.
Apa yang sering kita lakukan mungkin untuk memproses gambar dalam dua cara berikut.
Tentukan atribut layout_parent = "match_parent" dan layout_parent = "wrap_content" melalui <ImageView>, dan gunakan atribut Scaletype dari <ImageView> untuk penskalaan.
- Scaletype = "FitXy": Ketika diatur ke properti ini, itu akan menyebabkan gambar meregangkan secara horizontal, menyebabkan gambar berubah bentuk, dan jika ada font pada gambar, maka ini akan menjadi hal yang buruk.
- Scaletype = "CenterCrop": Seharusnya baik untuk skala dalam rasio yang sama, tetapi sangat memalukan, masih tidak berhasil. Saat memproses gambar, ukuran gambar akan diperoleh terlebih dahulu, dan kemudian lebar dan tinggi gambar akan ditentukan sebelum penskalaan. Dengan cara ini, setelah kisaran gambar ditentukan, titik tengah gambar diskalakan sampai lebar benar -benar mengisi layar. Ini sangat memalukan, bagian atas dan bawah dari gambar akan terputus, sehingga gambar tidak sepenuhnya ditampilkan, dan masih bukan yang kita inginkan.
Pendekatan saya adalah mendapatkan gambar setelah penskalaan dalam kode, dan kemudian menambahkan gambar dengan mengatur backgroud, yang memecahkan masalah. Kemudian kode di atas:
// Dapatkan resolusi gambar, dapatkan Width DisplayMetrics DM = DisplayMetrics baru (); getWindowManager (). getDefaultDisplay (). GetMetrics (DM); int mscreenwidth = dm.widthpixels; // Dapatkan lebar resolusi layar int mscreenheight = dm.heightpixels; // Muat gambar bitmap bitmap = bitmapfactory.decoderesource (getResources (), r.drawable.bank_help); int bitmapwidth = bitmap.getWidth (); int bitmapheight = bitmap.getHeight (); // Dapatkan rasio lebar gambar float num = mscreenwidth /(float) bitmapwidth; Matriks matriks = matriks baru (); matrix.postscale (num, num); // Hasilkan objek bitmap scaled bitmap reseizeBitMap = bitmap.createBitMap (bitmap, 0, 0, bitmapwidth, bitmapheight, matriks, true);
Kode di atas dibagi menjadi langkah -langkah berikut
1. Dapatkan resolusi layar.
2. Dapatkan gambar dan ukur lebar dan tinggi gambar.
3. Dapatkan rasio zoom yang sesuai melalui lebar layar/lebar gambar
4. Buat objek matriks dan tentukan penskalaan. (PS: Hal ini sangat bagus, dan objek juga digunakan untuk memodifikasinya dalam warna gradien di depan)
5. Hasilkan gambar melalui metode bitmap.createBitMap (). (PS: Parameter terakhir harus dilewatkan benar. Jika salah dilewatkan, gambar yang diperbesar tidak akan ditampilkan dengan jelas)
Di atas adalah pengantar operasi terkait pemrosesan gambar Java, saya harap ini akan membantu untuk pembelajaran semua orang.