Java BufferedImage.setRGB 给出类型 13 图像的灰度?

标签 java

我需要对图像进行一些操作,并且我想以特定颜色显示图像的特定部分。但是,在某些图像上,颜色显示为灰色。

例如,如果我写:

BufferedImage baseImage = javax.imageio.ImageIO.read(new File(fileName));
System.out.println(baseImage.getType());
System.out.println(baseImage.getRGB(0, 0));
baseImage.setRGB(0, 0, Color.BLUE.getRGB());
System.out.println(baseImage.getRGB(0, 0));

我的文件是红色的单个像素。输出是:

13
-65536
-16777216

如果我保存图像,我可以看到一个黑色像素。

我在上一个示例中尝试了一张类型为 5 而不是 13 的月亮图像,效果很好。

我做错了什么吗?

最佳答案

正如您自己发现的那样,缓冲的图像可以是不同的类型:http://docs.oracle.com/javase/7/docs/api/java/awt/image/BufferedImage.html这取决于读取的文件。

如果您要求缓冲的图像是某种类型,则需要手动创建图像并将加载的图像绘制到其中。

例如:

BufferedImage loadedImage = ImageIO.read(...);

BufferedImage rgbImage = new BufferedImage(loadedImage.getWidth(), loadedImage.getHeight(), BufferedImage.TYPE_INT_RGB);
rgbImage.getGraphics().drawImage(loadedImage, 0, 0, null);

关于Java BufferedImage.setRGB 给出类型 13 图像的灰度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22665302/

相关文章:

java - JPanel 忘记了它的位置

java - 插件 org.apache.maven.plugins :maven-resources-plugin:2. 5

java - 在 Java 中创建矩形时,我真的调用了 paintComponent 方法吗?

Java DOM 转换和解析具有无效 XML 字符的任意字符串?

java - 单击时更改按钮状态

java - 为什么 Gradle 试图为我的项目查找资源包?

java - 如何让我的带有音频的 Java 应用程序在 Linux 中播放得很好?

java - sql异常:Parameter index out of range

java - java中已提交内存的确切状态

Java Spring Data Mongodb 1.10 排序忽略大小写