我正在用java编写一个小程序,它将在图像上绘制路径。为此,我有以下代码
while(!path.isEmpty())
{
Position p = path.poll();
image.setRGB(p.getX(),p.getY(),Color.red.getRGB());
}
其中path是一个对象的队列,其中X和Y坐标和图像是标准的BufferedImage(来自ImageIO.read)。此代码仅用于在队列中的图像的每个像素上绘制红色像素。而不是红色,当我把这个图像写入文件时,我得到一个灰色。
Color.red.getRGB的返回值是0xFFFF0000。在我将其设置为红色后对像素执行getRGB时,我返回0xFF7F7F7F。
我是Java的新手,不知道为什么会这样。任何帮助将不胜感激。
如果它有所不同,则图像来自.bmp文件。
答案 0 :(得分:2)
可能是您正在使用灰度类型的BufferedImage,或者将这些sRGB值映射为灰色的类型。
通常,您有两种可能性之一:
由于你是从.bmp文件加载图像,第二个可能是你的情况。
通常,如果您只想了解Java中的图像处理,我建议使用第二个BufferedImage构造函数和* TYPE_INT_ARGB *作为启动器的类型,并从中扩展您的代码。根据我对早期Java时代的记忆,学习图像加载可能有点棘手:)。
另外,您可能需要阅读official Java2D tutorial。这是对该主题的一个很好的介绍。