1

我正在做一项工作,我必须用 Java 编程语言加载 PGM 图像。

我从文件加载它没有问题,因为我使用的是 Apache Sanselan 框架,而且它太容易做到:

BufferedImage image = Sanselan.getBufferedImage(new File("image.pgm"));

但是,当我尝试在 Swing Canvas 上绘制它时,我意识到无法正确识别颜色范围。问题是加载的最大颜色值始终为 255(而在 PGM 文件中,可以指定另一个最大颜色)。

例如,当加载 PGM 图像时

P2
# Shows the word "FEEP" (example from Netpbm main page on PGM)
24 8
15
0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
0  3  3  3  3  0  0  7  7  7  7  0  0 11 11 11 11  0  0 15 15 15 15  0
0  3  0  0  0  0  0  7  0  0  0  0  0 11  0  0  0  0  0 15  0  0 15  0
0  3  3  3  0  0  0  7  7  7  0  0  0 11 11 11  0  0  0 15 15 15 15  0
0  3  0  0  0  0  0  7  0  0  0  0  0 11  0  0  0  0  0 15  0  0  0  0
0  3  0  0  0  0  0  7  7  7  7  0  0 11 11 11 11  0  0 15  0  0  0  0
0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 14 13 12 11 10 9  8  7

最大颜色为 15,我得到一个完整的黑色图像,因为最大颜色被视为 255(因此,如果图像正确加载,则值为 15 的像素将是白色,在这种情况下几乎是黑色)。

我尝试使用 Java Advanced Image I/O Tools,但遇到了完全相同的问题。

有人知道如何解决吗?

谢谢!

4

0 回答 0