CopyPixelsFromBuffer ใช้งานได้ แต่การถอดรหัส ByteArray ของมันกลับเป็นโมฆะ

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

ฉันแยก ByteArray ออกจาก byteBuffer ที่ถูกต้อง แต่มันคืนค่าเป็นโมฆะเมื่อฉันพยายามถอดรหัส ByteArray ใครสามารถอธิบายได้ว่าทำไมถึงเป็นเช่นนั้น

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 แหล่งที่มา


คำตอบ (1)


ฉันเชื่อว่าทั้งสองฟังก์ชันทำสิ่งที่แตกต่างกันและคาดหวังข้อมูลที่แตกต่างกัน

copyPixelsFromBuffer()

ใช้เพื่อนำเข้าข้อมูลพิกเซลแบบดิบไปยังภาพบิตแมปที่มีอยู่ ซึ่งมีการกำหนดค่าขนาดและความลึกของพิกเซลไว้แล้ว

BitmapFactory.decodeByteArray()

ใช้เพื่อสร้างบิตแมปจากอาร์เรย์ไบต์ที่มีข้อมูลไฟล์บิตแมปแบบเต็ม ไม่ใช่แค่พิกเซลดิบ นั่นเป็นสาเหตุที่ฟังก์ชันไม่ใช้ (หรือต้องการ) ข้อมูลขนาดและความลึกของพิกเซล เนื่องจากได้รับข้อมูลทั้งหมดจากไบต์ที่ส่งผ่านไป

person adelphus    schedule 16.06.2015