私は、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を使用してみましたが、まったく同じ問題が発生しました。
誰かがそれを解決する方法を知っていますか?
ありがとう!