8

BufferedImage使用此代码转换为灰度。我通常通过BufferedImage.getRGB(i,j)gor 和 R、G 和 B 的每个值获得像素值。但是如何获得灰度图像中像素的值?

编辑:对不起,忘记了转换。

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 图像,那么你可以得到 (Red , green , blue , Gray) 这样的值:

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 回答