CopyPixelsFromBuffer berfungsi. Tapi dekode ByteArray-nya mengembalikan nol

Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
bitmap.copyPixelsFromBuffer(byteBuffer);
// bitmap is valid and can be displayed

Saya mengekstrak ByteArray dari byteBuffer yang valid. Tapi itu mengembalikan nol ketika saya mencoba decodeByteArray. Adakah yang bisa menjelaskan mengapa hal ini terjadi.

byteBuffer.rewind();
byteBuffer.get(byteArray, 0, byteBuffer.capacity());
Bitmap bitmap = BitmapFactory.decodeByteArray(byteArray, 0 , byteArray.length);
// returns null

person Pierrew    schedule 16.06.2015    source sumber


Jawaban (1)


Saya yakin kedua fungsi tersebut melakukan hal yang berbeda dan mengharapkan data yang berbeda.

salinPixelsFromBuffer()

digunakan untuk mengimpor informasi piksel mentah ke dalam gambar Bitmap yang ada yang sudah memiliki ukuran dan kedalaman piksel yang dikonfigurasi.

BitmapFactory.decodeByteArray()

digunakan untuk membuat bitmap dari array byte yang berisi data file bitmap lengkap, bukan hanya piksel mentah. Itu sebabnya fungsi ini tidak mengambil (atau memerlukan) informasi ukuran dan kedalaman piksel, karena fungsi tersebut mendapatkan semuanya dari byte yang diteruskan ke dalamnya.

person adelphus    schedule 16.06.2015