バッファがピクセルに対して十分な大きさではないというエラーが表示されます。推奨事項はありますか?Bitmap b は、ピクセルを配置しようとしている gSaveBitmap と同じサイズである必要があります。
if(gBuffer == null)
{
Bitmap b = Bitmap.createScaledBitmap(gBitmap, mWidth, mHeight, false);
//gBuffer = ByteBuffer.allocateDirect(b.getRowBytes()*b.getHeight()*4);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
b.compress(Bitmap.CompressFormat.PNG, 100, stream);
gBuffer = ByteBuffer.wrap(stream.toByteArray());
b.recycle();
}
gSaveBitmap.copyPixelsFromBuffer(gBuffer);
更新: 以下のコードでは、圧縮を行わなくてもまったく同じエラーが発生します。
if(gBuffer == null)
{
Bitmap b = Bitmap.createScaledBitmap(gBitmap, mWidth, mHeight, false);
int bytes = b.getWidth()*b.getHeight()*4;
gBuffer = ByteBuffer.allocate(bytes);
b.copyPixelsToBuffer(gBuffer);
b.recycle();
}
gSaveBitmap.copyPixelsFromBuffer(gBuffer);
更新: gBuffer のサイズを 2 倍にすることで問題を解決しました。おそらく、これが正しいサイズである理由を誰かが教えてくれるでしょう。また...画像の回転が間違っているため、90度回転する必要があります。gBuffer でデータを再配置する必要がある方法はありますか?
gBuffer = ByteBuffer.allocate(b.getRowBytes()*b.getHeight()*2);