Manipulasi peta bit ialah tugas biasa dalam pembangunan Android, selalunya melibatkan penukaran peta bit kepada tatasusunan bait untuk penyimpanan atau penghantaran data. Walau bagaimanapun, sesetengah pembangun menghadapi kesukaran apabila cuba melakukan penukaran ini, membawa kepada soalan berikut:
S: Mengapa tatasusunan bait yang disalin diisi dengan sifar selepas menukar peta bit menggunakan copyPixelsToBuffer?
Coretan kod yang disediakan menunjukkan percubaan untuk menukar peta bit kepada tatasusunan bait menggunakan copyPixelsToBuffer, tetapi penimbal yang terhasil hanya mengandungi sifar. Untuk memahami punca isu ini, mari kita analisa kod:
Setelah pemeriksaan lanjut, menjadi jelas bahawa isu itu terletak pada kaedah copyPixelsToBuffer itu sendiri. Apabila menggunakan peta bit tidak berubah, ia tidak melakukan salinan piksel sebenar tetapi mengembalikan rujukan pendua. Oleh itu, sebarang pengubahsuaian seterusnya pada peta bit tidak akan ditunjukkan dalam penimbal yang disalin.
Untuk menukar peta bit kepada tatasusunan bait dengan berkesan, kaedah alternatif mesti diambil bekerja. Satu pendekatan yang boleh dipercayai ialah memampatkan peta bit menggunakan format seperti PNG atau JPEG dan menyimpan data termampat dalam tatasusunan bait. Berikut ialah contoh:
Bitmap bmp = intent.getExtras().get("data"); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bmp.compress(Bitmap.CompressFormat.PNG, 100, stream); byte[] byteArray = stream.toByteArray(); bmp.recycle();
Coretan kod ini mengikut langkah berikut:
Ingat, data peta bit juga boleh diambil daripada tatasusunan bait menggunakan kelas BitmapFactory:
BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
Atas ialah kandungan terperinci Mengapa Tatasusunan Bait Saya Mengandungi Sifar Selepas Menukar Peta Bit Menggunakan copyPixelsToBuffer?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!