java - 使用 ImageIO 加载 8 位灰度图像

标签 java image javax.imageio

我想使用 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/

相关文章:

image - Azure 上的 Syncfusion PdfViewerControl

iphone - ImageIO : ERROR - MetadataLib. dylib 未找到

resize - 使用 imgscalr 调整 .tif 图像的大小

java - 使用不同压缩创建多页 TIFF

java - 如何在没有分析器的情况下获取 JVM 中迄今为止分配的总内存?

java - Spring Neo4j 保存 MultipartFile

java - JDBC 总是测试 MySQL 表的最后一行?

java - 如何使用 Java SIP Servlet 开发 SIP/VOIP 服务器端应用程序

java - libgdx 剪切图像

node.js - 将原始图像转换为缓冲区