はい、上記の2つの方法を使用し、すべてのビットマップデータを最初に格納するByteBufferオブジェクトを使用する必要があります。その後、すべてのバッファデータをバイト配列にコピーし、この配列内のすべてのargb操作を実行できます。すべての処理が完了したら、このバイト配列を新しく割り当てられたByteBufferにラップし、最後にこのバッファから元のビットマップにコピーします。 ここにいくつかのサンプルがあります: "bmpData"は、イメージピクセルデータを保持するBitmapオブジェクトです。
int size = bmpData.getRowBytes()*bmpData.getHeight()*4;
ByteBuffer buf = ByteBuffer.allocate(size);
bmpData.copyPixelsToBuffer(buf);
byte[] byt = buf.array();
for(int ctr=0;ctr<size;ctr+=4)
{
//access array in form of argb. for ex. byt[0] is 'r', byt[1] is 'g' and so on..
}
ByteBuffer retBuf = ByteBuffer.wrap(byt);
bmpData.copyPixelsFromBuffer(retBuf);
私も同じことが思っていたので、あなたの問題を解決したことはありますか? – TomP89
@ TomP89はい、.NET LockBitsよりはるかに簡単です。私が質問した2つの方法を使用するだけで、ビットマップカラーデータが配列にコピーされます。逆もまた同様です。 –
ありがとう! – TomP89