1

私は、Javaプログラミング言語でPGMイメージをロードする必要がある作業を行っています。

私はApacheSanselanフレームワークを使用していて、それを行うのは簡単すぎるので、ファイルからロードするのに問題はありません。

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