小编典典

将Java位图转换为字节数组

all

  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 时……从相机返回的位图是不可变的……但这无关紧要,因为它正在复制。

这段代码可能有什么问题?


阅读 67

收藏
2022-04-18

共1个答案

小编典典

尝试这样的事情:

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