BufferedImage - 获取灰度颜色模型图片中像素的值

Kaj*_*zer 7 java pixel grayscale

BufferedImage使用此代码转换为灰度.我通常得到像素值BufferedImage.getRGB(i,j)和g,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;
}
Run Code Online (Sandbox Code Playgroud)

Aly*_*mal 20

如果您有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);
Run Code Online (Sandbox Code Playgroud)

而灰色是(r,g,b)的平均值,如下所示:

int gray = (r + g + b) / 3;
Run Code Online (Sandbox Code Playgroud)

但如果将RGB图像(24位)转换为灰度图像(8位):

int gray= img.getRGB(x, y)& 0xFF;/////////will be the gray value
Run Code Online (Sandbox Code Playgroud)