私はIntBuffer
ビットマップのピクセルを操作するために使用していますが、色定数がAARRGGBBであるのに対し、バッファの値はAABBGGRRである必要があります。、、 ...を使用して反転できることはわかっていますが、完全ではないと思います。Color.argb
Color.a
非常に多くのピクセルを操作する必要があるため、この演算子を短時間で実行できるアルゴリズムが必要です。私はこのビット式について考えていますが、正しくありません。
0xFFFFFFFF ^ pSourceColor
より良いものがない場合は、時間を短縮するために関数を呼び出す代わりに、ビットシフト演算子(実行するColor.a
、...)を使用する可能性があります。
編集:
これは変換する私の現在の関数ですが、それを実行するためのより良いアルゴリズム(より少ない演算子)があるはずだと思います:
private int getBufferedColor(final int pSourceColor) {
return
((pSourceColor >> 24) << 24) | // Alpha
((pSourceColor >> 16) & 0xFF) | // Red -> Blue
((pSourceColor >> 8) & 0xFF) << 8 | // Green
((pSourceColor) & 0xFF) << 16; // Blue -> Red
}