1. ホーム
  2. java

[解決済み] BufferedImage.getRGBの出力値を理解する

2022-02-09 23:04:27

質問事項

このメソッドを使って、画像内のピクセルを整数値で取得しています。

int colour = img.getRGB(x, y);

その後、値をプリントアウトしてみると、黒いピクセルは "-16777216" のような値に対応し、青っぽいものは "-16755216" などのような値に対応していることがわかります。どなたか、この値の背後にあるロジックを説明していただけませんか?

どのように解決するのですか?

getRGB(int x, int y) の位置のカラーピクセルの値を返します。 (x,y) .
戻り値の解釈を間違えています。
バイナリ形式です。 11...11010101のように、int値として渡されます。
その値のRGB(赤、緑、青)成分を取得したい場合は、Colorクラスを使用します。

Color mycolor = new Color(img.getRGB(x, y));

そして、Red、Green、Blueの値を取得するために getRed() , getGreen() , getBlue() , getAlpha() . そして int の値は、これらのメソッドによって、値を持つおなじみのフォーマットで返されます。 0 < value < 255

int red = mycolor.getRed();

を使いたくない場合は Color クラスの値を取得するには、ビット演算を使用する必要があります。