gpt4 book ai didi

java - BufferedImage:红色显示为灰色

转载 作者:行者123 更新时间:2023-11-30 04:58:31 25 4
gpt4 key购买 nike

我正在用java编写一个小程序,它将在图像上绘制一条路径。为此,我有以下代码

while(!path.isEmpty())
{
Position p = path.poll();
image.setRGB(p.getX(),p.getY(),Color.red.getRGB());
}

其中路径是一个包含 X 和 Y 坐标的对象队列,图像是标准的 BufferedImage(来自 ImageIO.read)。此代码的目的只是在队列中图像的每个像素上绘制一个红色像素。不过,当我将此图像写入文件时,我得到的不是红色,而是灰色。

The diagonal gray line SHOULD be Red...

Color.red.getRGB的返回值为0xFFFF0000。当我将像素设置为红色后对其执行 getRGB 时,我返回 0xFF7F7F7F。

我对 Java 比较陌生,不知道为什么会发生这种情况。任何帮助将不胜感激。

如果有区别,则该图像来自 .bmp 文件。

最佳答案

您可能使用的是灰度类型的 BufferedImage,或者将这些 sRGB 值映射到灰色的类型。

通常,您有两种可能性之一:

  1. 如果您显式初始化 BufferedImage,请检查 imageType 或 ColorModel 参数 depending on the constructor you're using .
  2. 如果您通过某种工厂方法或其他间接方式初始化图像对象,请检查 getType() 方法的值。这些值列在 JavaDoc 中。如果这是一个“正确”值(RGB 类型之一),请检查 getColorModel() 的返回

由于您是从 .bmp 文件加载图像,因此第二个可能是您的情况。

有关颜色值转换问题的信息,请参阅 herehere .

一般来说,如果您只想了解 Java 中的图像处理,我建议使用第二个 BufferedImage 构造函数,并以 *TYPE_INT_ARGB* 作为初学者的类型,并从中扩展您的代码。根据我对早期 Java 生活的内存,学习图像加载可能有点棘手:)。

此外,您可能想阅读official Java2D tutorial 。这是对该主题的很好的介绍。

关于java - BufferedImage:红色显示为灰色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7698788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com