我想使用grayscaleImage = ImageIO.read(grayscaleFile)
加载8位灰度图像。但是,BufferedImage
类(grayscaleImage
的类型)仅提供方法getRGB(int x, int y)
。那么,color.getRed()
,color.getGreen()
,color.getBlue()
和color.getAlpha()
的值是什么
Color color = new Color(grayscaleImage.getRGB(x, y), true);
从第一次观察看,似乎存储在像素(x,y)
的图像文件中的8位值传播到color
的红色,绿色和蓝色分量,而它的alpha值固定为255
。
有人可以证实这一观察结果吗?
答案 0 :(得分:3)
image.getRGB(x,y)
获得的值是int
,由三个颜色分量Red,Green和Blue组成,每个颜色分量为8位。当图像不包含透明度时,Alpha值固定为255。
当图像是灰度图像时,此RGB值的红色,绿色和蓝色分量将全部相等。因此,您可以获得“灰色”值
int rgb = image.getRGB(x,y);
// This yields a value between 0 (black)
// and 255 (white) :
int gray = rgb & 0xFF;
答案 1 :(得分:0)
没错。灰色只是三种颜色成分(红色,绿色,蓝色)中具有相同值的颜色。虽然您只需要一个值来确定颜色(因为红色,绿色和蓝色组件具有相同的值),但在图像加载时,该值将分配给所有三个颜色组件。
如果获得图像的每个像素的值,则必须为同一像素x,y的三个颜色分量获得相同的值。对于alpha分量,因为它是灰度图像,是正确的,它是255。