Penukaran Tatasusunan Byte daripada Peta Bit Java Dinilai Semula
Dalam percubaan untuk menukar peta bit Java kepada tatasusunan bait, pembangun menghadapi isu pelik di mana tatasusunan bait terhasil mengandungi semua 0s walaupun peta bit diperoleh daripada kamera.
Coretan kod yang digunakan untuk penukaran ini melibatkan mengekstrak bait baris, ketinggian dan memperuntukkan ByteBuffer bagi saiz yang dikira. CopyPixelsToBuffer kemudiannya digunakan untuk memindahkan data imej ke dalam penimbal, diikuti dengan pengekstrakan bait ke dalam tatasusunan bait yang baru dibuat.
Setelah diperiksa, kod itu kelihatan baik. Walau bagaimanapun, isu asas terletak pada ketidakbolehubah peta bit. Walaupun copyPixelsToBuffer berhasrat untuk membuat salinan data bitmap, imej asas kekal tidak berubah kerana kebolehubahannya, menghasilkan penimbal diisi dengan 0s.
Pendekatan alternatif menawarkan penyelesaian muktamad:
ByteArrayOutputStream
Untuk menukar peta bit secara berkesan kepada tatasusunan bait, pertimbangkan untuk menggunakan ByteArrayOutputStream bersama-sama dengan kaedah pemampatan Bitmap. Teknik ini memampatkan peta bit ke dalam format tertentu (PNG dalam kes ini) dan menulis data yang dimampatkan ke dalam tatasusunan bait. Selepas itu, peta bit boleh dikitar semula untuk membebaskan memori.
Dengan melaksanakan strategi ini, anda boleh menukar peta bit Java kepada tatasusunan bait dengan pasti, menyelesaikan isu yang dihadapi dengan copyPixelsToBuffer dan menghasilkan tatasusunan bait yang sah yang mewakili imej .
Atas ialah kandungan terperinci Mengapa Penukaran Peta Bit Java Saya kepada Tatasusunan Byte Menghasilkan Semua 0s?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!