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
Colorをint
(4バイト)intとして表しますTYPE_INT_ARGB
が、アルファチャネルは無視されます(またはビット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
。これらの値自体は色を保存しません。