我想使用 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
。
有人可以证实这一观察吗?
最佳答案
使用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;
关于java - 使用 ImageIO 加载 8 位灰度图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23428407/