8

このコードを使用してグレースケールにBufferedImage変換しました。通常BufferedImage.getRGB(i,j)、R、G、B の各値を gor でピクセル値を取得します。しかし、グレースケール イメージのピクセル値を取得するにはどうすればよいでしょうか。

編集:申し訳ありませんが、変換について忘れていました。

static BufferedImage toGray(BufferedImage origPic) {
    BufferedImage pic = new BufferedImage(origPic.getWidth(), origPic.getHeight(), BufferedImage.TYPE_BYTE_GRAY);
    Graphics g = pic.getGraphics();
    g.drawImage(origPic, 0, 0, null);
    g.dispose();
    return pic;
}
4

1 に答える 1

23

RGB 画像がある場合は、次のような (赤、緑、青、グレー) 値を取得できます。

BufferedImage img;//////read the image
int rgb = img.getRGB(x, y);
int r = (rgb >> 16) & 0xFF;
int g = (rgb >> 8) & 0xFF;
int b = (rgb & 0xFF);

グレーは (r , g , b) の平均で、次のようになります。

int gray = (r + g + b) / 3;

ただし、RGB イメージ (24 ビット) をグレー イメージ (8 ビット) に変換すると、次のようになります。

int gray= img.getRGB(x, y)& 0xFF;/////////will be the gray value
于 2013-04-12T13:27:13.057 に答える