web-dev-qa-db-ja.com

TYPE_INT_RGBおよびTYPE_INT_ARGBのフォーマット

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から赤、緑、青を取得するにはどうすればよいですか?

17
Pro.Hessam

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

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

Java.awt.Color および Java.awt.image.BufferedImage のjavadocを見てください。

27
Alberto

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が得られるため、この名前が付けられます。

11
Falkreon

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

0
Nathan Ryan