Rumah >Java >javaTutorial >Mengapakah semua bait dalam penimbal saya 0 selepas memanggil copyPixelsToBuffer() pada Bitmap?
Java: Menukar Bitmap kepada Array Byte
Apabila cuba menukar objek Bitmap kepada tatasusunan bait menggunakan kod yang disediakan, pengguna mungkin menghadapi isu di mana semua bait dalam penimbal kekal pada 0 selepas memanggil copyPixelsToBuffer(). Walaupun kebolehubahan Bitmap yang dikembalikan daripada kamera, ia tidak sepatutnya menjejaskan proses penyalinan.
Punca Punca Potensi:
Coretan kod menggunakan kelas ByteBuffer untuk memperuntukkan memori dan menyalin Bitmap piksel ke dalam penimbal. Walau bagaimanapun, ia terus mengakses penimbal asas tanpa menetapkan offsetnya dengan betul. Ini mungkin menyebabkan kaedah get() hanya mengembalikan 0 nilai.
Penyelesaian:
Untuk membetulkan isu ini, pertimbangkan untuk menggunakan pendekatan berikut:
<code class="java">Bitmap bmp = intent.getExtras().get("data"); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bmp.compress(Bitmap.CompressFormat.PNG, 100, stream); byte[] byteArray = stream.toByteArray(); bmp.recycle();</code>
Dalam ini kod yang dipertingkatkan:
Dengan menggunakan pendekatan ini, anda boleh menukar objek Bitmap kepada tatasusunan bait dengan berkesan tanpa menghadapi isu aliran bawah penimbal.
Atas ialah kandungan terperinci Mengapakah semua bait dalam penimbal saya 0 selepas memanggil copyPixelsToBuffer() pada Bitmap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!