Java 使用ImageIO加载8位灰度图像

Java 使用ImageIO加载8位灰度图像,java,image,javax.imageio,Java,Image,Javax.imageio,我想使用grayscaleImage=ImageIO.read(grayscaleFile)加载8位灰度图像。但是,BufferedImage类(它是grayscaleImage的类型)只提供了一个方法getRGB(intx,inty)。那么,color.getRed(),color.getGreen(),color.getBlue()和color.getAlpha()的值是什么呢 Color color = new Color(grayscaleImage.getRGB(x, y), true

我想使用
grayscaleImage=ImageIO.read(grayscaleFile)
加载8位灰度图像。但是,
BufferedImage
类(它是
grayscaleImage
的类型)只提供了一个方法
getRGB(intx,inty)
。那么,
color.getRed()
color.getGreen()
color.getBlue()
color.getAlpha()
的值是什么呢

Color color = new Color(grayscaleImage.getRGB(x, y), true);
从第一次观察来看,似乎存储在图像文件中像素
(x,y)
处的8位值被传播到
颜色的红色、绿色和蓝色分量中,而其alpha值固定在
255


有人能证实这一观察结果吗?

没错。灰色只是三种颜色(红色、绿色、蓝色)中具有相同值的颜色。虽然您只需要一个值来确定颜色(因为红色、绿色和蓝色组件具有相同的值),但在图像加载时,该值将指定给所有三个颜色组件


如果获得图像每个像素的值,则必须获得相同像素x、y的三种颜色分量的相同值。对于alpha分量,因为它是灰度图像,所以正确值应该是255。

没错。灰色只是三种颜色(红色、绿色、蓝色)中具有相同值的颜色。虽然您只需要一个值来确定颜色(因为红色、绿色和蓝色组件具有相同的值),但在图像加载时,该值将指定给所有三个颜色组件


如果获得图像每个像素的值,则必须获得相同像素x、y的三种颜色分量的相同值。对于alpha分量,因为它是灰度图像,所以正确值应该是255。

没错。灰色只是三种颜色(红色、绿色、蓝色)中具有相同值的颜色。虽然您只需要一个值来确定颜色(因为红色、绿色和蓝色组件具有相同的值),但在图像加载时,该值将指定给所有三个颜色组件


如果获得图像每个像素的值,则必须获得相同像素x、y的三种颜色分量的相同值。对于alpha分量,因为它是灰度图像,所以正确值应该是255。

没错。灰色只是三种颜色(红色、绿色、蓝色)中具有相同值的颜色。虽然您只需要一个值来确定颜色(因为红色、绿色和蓝色组件具有相同的值),但在图像加载时,该值将指定给所有三个颜色组件


如果获得图像每个像素的值,则必须获得相同像素x、y的三种颜色分量的相同值。对于alpha分量,因为它是灰度图像,所以正确值为255。

通过
图像获得的值。getRGB(x,y)
是一个
int
,由三个颜色分量组成,分别为红色、绿色和蓝色,每个分量有8位。当图像不包含透明度时,Alpha值固定为255

当图像为灰度图像时,此RGB值的红色、绿色和蓝色分量将全部相等。因此,您可以获得如下“灰色”值:


使用
image.getRGB(x,y)
获得的值是一个
int
值,它由三个颜色分量组成,分别为红色、绿色和蓝色,每个分量有8位。当图像不包含透明度时,Alpha值固定为255

当图像为灰度图像时,此RGB值的红色、绿色和蓝色分量将全部相等。因此,您可以获得如下“灰色”值:


使用
image.getRGB(x,y)
获得的值是一个
int
值,它由三个颜色分量组成,分别为红色、绿色和蓝色,每个分量有8位。当图像不包含透明度时,Alpha值固定为255

当图像为灰度图像时,此RGB值的红色、绿色和蓝色分量将全部相等。因此,您可以获得如下“灰色”值:


使用
image.getRGB(x,y)
获得的值是一个
int
值,它由三个颜色分量组成,分别为红色、绿色和蓝色,每个分量有8位。当图像不包含透明度时,Alpha值固定为255

当图像为灰度图像时,此RGB值的红色、绿色和蓝色分量将全部相等。因此,您可以获得如下“灰色”值:

int rgb = image.getRGB(x,y);

// This yields a value between 0 (black)
// and 255 (white) :
int gray = rgb & 0xFF;