Bitmap bmp = intent.getExtras().get("data");
int size = bmp.getRowBytes() * bmp.getHeight();
ByteBuffer b = ByteBuffer.allocate(size);
bmp.copyPixelsToBuffer(b);
byte[] bytes = new byte[size];
try {
b.get(bytes, 0, bytes.length);
} catch (BufferUnderflowException e) {
// always happens
}
// do something with byte[]
当我在调用copyPixelsToBuffer
后查看缓冲区时,所有字节都为0...从相机返回的位图是不可变的...但这并不重要,因为它正在进行复制。
这段代码可能有什么问题?
ByteArrayOutputStream
将分配一个与你的Bitmap
后备byte[]
大小相同的byte[]
,然后ByteArrayOutputStream.toByteArray()
又会再次分配一个相同大小的byte[]
。 - zyamys