1

ピクセルビットをいじって画像を操作したかったのです。そこで、PixelGrabber から取得したピクセルを変換したいと考えました。argb 値はバイト単位でした。ここで、バイト配列をビットに変換して操作したいと思います。次に、バイト配列に変換します。

例: -1057365 を 11101111 11011101 10101011 11111111 および 11101111 11011101 10101011 11111111 を -1057365 に

それらの間で変換する効率的な方法があることを知っている人はいますか? または、Javaにはメソッドが実装されていますが、わかりません。

助けてくれてありがとう。

4

2 に答える 2

4

あなたが持っている値は、ARGB コードの生の 4 バイト int 表現であると仮定します。各チャネルは 0 ~ 254 の範囲の 1 バイト幅であり、全体で 0 ~ 255^4 (マイナス 1) の範囲全体を構成します。

さまざまなチャネル値を取得する最善の方法は、argb 値をさまざまなフィールドにマスキングしてシフトすることです。

int alpha = (pixel >> 24) & 0xff;
int red   = (pixel >> 16) & 0xff;
int green = (pixel >>  8) & 0xff;
int blue  = (pixel      ) & 0xff;

ソース

于 2012-08-23T22:05:52.553 に答える
0

をご覧になることをお勧めしますBitSet

byte[] argb = ...
BitSet bits = BitSet.valueOf(argb);
bits.set(0); // sets the 0th bit to true
bits.clear(0); // sets the 0th bit to false

byte[] newArgb = bits.toByteArray();

/edit
を に変換するbyte[]にはint:

int i = 0;
for(byte b : newArgb) { // you could also omit this loop
    i <<= 8;            // and do this all on one line
    i |= (b & 0xFF);    // but it can get kind of messy.
}

また

ByteBuffer bb = ByteBuffer.allocate(4);
bb.put(newArgb);
int i = bb.getInt();
于 2012-08-23T22:04:29.387 に答える