Rumah >Java >javaTutorial >Mengapakah penimbal bitmap Java saya diisi dengan sifar selepas menggunakan copyPixelsToBuffer?

Mengapakah penimbal bitmap Java saya diisi dengan sifar selepas menggunakan copyPixelsToBuffer?

DDD
DDDasal
2024-11-05 09:06:02407semak imbas

Why is my Java bitmap buffer filled with zeros after using copyPixelsToBuffer?

Java Bitmap to Byte Array: Menyelesaikan Isu Penampan

Dalam percubaan untuk menukar peta bit Java kepada tatasusunan bait, sesetengah pengguna menghadapi masalah pelik di mana penimbal mengandungi hanya sifar selepas menyalin piksel menggunakan kaedah copyPixelsToBuffer. Walaupun peta bit yang dikembalikan kamera tidak boleh diubah, hasil yang tidak dijangka ini menimbulkan kebimbangan tentang ketepatan kod.

Untuk menangani isu ini, pertimbangkan untuk menggunakan pendekatan alternatif:

<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 kod yang disemak ini , daripada menyalin piksel terus ke penimbal, kami menggunakan ByteArrayOutputStream untuk memampatkan peta bit ke dalam format PNG (dengan tahap kualiti 100). Proses ini menjana tatasusunan bait yang mengandungi data bitmap. Selain itu, kod tersebut mengeluarkan sumber bitmap dengan memanggil kaedah kitar semula untuk mengelakkan kebocoran memori.

Atas ialah kandungan terperinci Mengapakah penimbal bitmap Java saya diisi dengan sifar selepas menggunakan copyPixelsToBuffer?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn