したがって、BufferedImage
では、RGB値が表現された単一の整数を受け取ります。これまでのところ、RGB値を取得するために以下を使用します。
_// rgbs is an array of integers, every single integer represents the
// RGB values combined in some way
int r = (int) ((Math.pow(256,3) + rgbs[k]) / 65536);
int g = (int) (((Math.pow(256,3) + rgbs[k]) / 256 ) % 256 );
int b = (int) ((Math.pow(256,3) + rgbs[k]) % 256);
_
そしてこれまでのところ、それは動作します。
私がする必要があるのは整数を取得する方法を図に示しますです。したがって、BufferedImage.setRGB()
を使用できます。
コードは次のようなものだと思います:
int rgb = red;
rgb = (rgb << 8) + green;
rgb = (rgb << 8) + blue;
また、以下を使用して個々の値を取得できると思います。
int red = (rgb >> 16) & 0xFF;
int green = (rgb >> 8) & 0xFF;
int blue = rgb & 0xFF;
int rgb = ((r&0x0ff)<<16)|((g&0x0ff)<<8)|(b&0x0ff);
R、g、bの値が> 255または<0にならないことがわかっている場合、&0x0ffは必要ありません。
追加的に
int red = (rgb>>16)&0x0ff;
int green=(rgb>>8) &0x0ff;
int blue= (rgb) &0x0ff;
乗算する必要はありません。
int rgb = new Color(r, g, b).getRGB();
r、g、b =各色の0〜255の3つの整数値の場合
それから
rgb = 65536 * r + 256 * g + b;
単一のrgb値は、合計16777216の可能なシェードを組み合わせたr、g、bの複合値です。
個々の色の値を取得するには、pixel(x、y)に対して次のようなColorを使用できます。
import Java.awt.Color;
import Java.awt.image.BufferedImage;
Color c = new Color(buffOriginalImage.getRGB(x,y));
int red = c.getRed();
int green = c.getGreen();
int blue = c.getBlue();
上記は、0〜255の範囲の赤、緑、青の整数値を提供します。
RGBから値を設定するには、次のようにします。
Color myColour = new Color(red, green, blue);
int rgb = myColour.getRGB();
//Change the pixel at (x,y) ti rgb value
image.setRGB(x, y, rgb);
上記は単一ピクセルの値を変更することに注意してください。したがって、画像全体の値を変更する必要がある場合は、2つのforループを使用して画像を反復処理する必要があります。