17

JavaがTYPE_INT_RGBとTYPE_INT_ARGBで色を保存する方法を誰かが私に説明できますか?
これらのコード行は、赤、緑、青を計算するために正しく機能しますか?

int red= (RGB>>16)&255;
int green= (RGB>>8)&255;
int blue= (RGB)&255;

そして、TYPE_INT_ARGBはどうですか?TYPE_INT_ARGBから赤、緑、青を取得するにはどうすればよいですか?

4

3 に答える 3

27

は、TYPE_INT_ARGB色をint(4バイト)として表し、ビット24〜31にアルファチャネル、16〜23に赤チャネル、8〜15に緑、0〜7に青を表します。

は、と同じ方法でTYPE_INT_RGBColorをint(4バイト)intとして表しますTYPE_INT_ARGBが、アルファチャネルは無視されます(またはビット24〜31は0です)。

java.awt.Colorjava.awt.image.BufferedImageのjavadocを見てください。

于 2011-05-14T10:40:40.787 に答える
11

TYPE_INT_RGBは正しいです。同等のTYPE_INT_ARGBコードは次のようになります。

int rgb = rgbColor.getRGB(); //always returns TYPE_INT_ARGB
int alpha = (rgb >> 24) & 0xFF;
int red =   (rgb >> 16) & 0xFF;
int green = (rgb >>  8) & 0xFF;
int blue =  (rgb      ) & 0xFF;

バイトの色要素を最上位から最下位までスペルアウトすると、ARGBが得られるため、この名前が付けられます。

于 2011-12-25T14:25:06.443 に答える
0

これらは、のインスタンスのカラーモデルを示す定数値ですBufferedImage。これらの値自体は色を保存しません。

于 2011-05-14T10:43:48.607 に答える