Android: Convert image object to bitmap does not work

匿名 (未验证) 提交于 2019-12-03 09:02:45

问题:

I am trying to convert image object to bitmap, but it return null.

image = reader.acquireLatestImage();                          ByteBuffer buffer = image.getPlanes()[0].getBuffer();                         byte[] bytes = new byte[buffer.capacity()];                         Bitmap myBitmap = BitmapFactory.decodeByteArray(bytes,0,bytes.length,null); 

The image itself is jpeg image, I can save it to the disk fine, the reason I want to convert to bitmap is because I want to do final rotation before saving it to the disk. Digging in the Class BitmapFactory I see this line.

bm = nativeDecodeByteArray(data, offset, length, opts); 

This line return null. Further Digging with the debugger

private static native Bitmap nativeDecodeByteArray(byte[] data, int offset,             int length, Options opts); 

This suppose to return Bitmap object but it return null.

Any tricks.. or ideas?

Thanks

回答1:

You haven't copied bytes.You checked capacity but not copied bytes.

ByteBuffer buffer = image.getPlanes()[0].getBuffer(); byte[] bytes = new byte[buffer.remaining()]; buffer.get(bytes); Bitmap myBitmap = BitmapFactory.decodeByteArray(bytes,0,bytes.length,null); 


回答2:

I think you're trying to decode an empty array, you just create it but never copy the image data to it.

You can try:

ByteBuffer buffer = image.getPlanes()[0].getBuffer(); byte[] bytes = buffer.array(); Bitmap myBitmap = BitmapFactory.decodeByteArray(bytes,0,bytes.length,null); 

As you say it doesn't work, then we need to copy the buffer manually ... try this :)

    byte[] bytes = new byte[buffer.remaining()];     buffer.get(bytes);     Bitmap myBitmap = BitmapFactory.decodeByteArray(bytes,0,bytes.length,null); 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!