我正在做一项工作,我必须用 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,但遇到了完全相同的问题。
有人知道如何解决吗?
谢谢!