将Java位图转换为字节数组

问题:

  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 …从相机返回的位图是不可变的,但这不应该重要,因为它正在复制。
这段代码可能是错的?

回答:

尝试这样的东西:

Bitmap bmp = intent.getExtras().get("data");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: converting Java bitmap to byte array

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

49 + = 50