Я делаю работу, в которой мне нужно загрузить изображение PGM на языке программирования Java.
У меня нет проблем с загрузкой его из файла, так как я использую фреймворк 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, но у меня точно такая же проблема.
Кто-нибудь знает, как ее решить?
Спасибо!