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から赤、緑、青を取得するにはどうすればよいですか?
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を見てください。
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が得られるため、この名前が付けられます。
これらは、BufferedImage
のインスタンスのカラーモデルを示す定数値です。これらの値自体は色を保存しません。