web-dev-qa-db-ja.com

JavaでgetRGB(x、y)整数ピクセルをColor(r、g、b、a)に変換する方法は?

getRGB(x,y)から取得した整数ピクセルがありますが、それをRGBA形式に変換する方法についての手がかりはありません。たとえば、_-16726016_はColor(0,200,0,255)である必要があります。任意のヒント?

25

私が正しく推測している場合、返されるのは0xAARRGGBBという形式の符号なし整数なので、

int b = (argb)&0xFF;
int g = (argb>>8)&0xFF;
int r = (argb>>16)&0xFF;
int a = (argb>>24)&0xFF;

色成分を抽出します。ただし、 docs をざっと見てみると、

Color c = new Color(argb);

または

Color c = new Color(argb, true);

colorのアルファコンポーネントも必要な場合。

[〜#〜]更新[〜#〜]

赤と青のコンポーネントは元の答えでは反転しているため、正しい答えは次のようになります。

int r = (argb>>16)&0xFF;
int g = (argb>>8)&0xFF;
int b = (argb>>0)&0xFF;

コードの最初の部分でも更新されました

44
AKX
    Color c = new Color(-16726016, true);
    System.out.println(c.getRed());
    System.out.println(c.getGreen());
    System.out.println(c.getBlue());
    System.out.println(c.getAlpha());

プリントアウト:

0
200
0
255

そういう意味ですか

25
laher