1. ホーム
  2. java

[解決済み] Java のビットマップをバイト配列に変換する

2022-02-12 18:49:45

質問事項

  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();
bmp.recycle();