4

BufferedImage を PNM ファイルとして保存しようとしています。すでに JAI (Java Advanced Imaging) をインストールしており、PNMWriter プラグインをインポートしています。ただし、ImageWriter に追加して .pnm に書き込む方法がわかりません。可能なフォーマット名を取得するために ImageIO.getWriterFormatNames() を実行すると、標準のもの (.png、.bmp、.jpg....) のみが表示されます...

4

2 に答える 2

1

私は自分のソフトウェアにこれを自分で実装しました。それはわずか 30 行のソース コードであり、簡単に解決できるもののために Java Advanced Imaging を追加したくありませんでした。これが私の解決策です:

        public static void write(BufferedImage image, OutputStream stream) throws IOException
        {
                /*
                 * Write file header.
                 */
                int imageWidth = image.getWidth();
                int imageHeight = image.getHeight();
                stream.write('P');
                stream.write('6');
                stream.write('\n');
                stream.write(Integer.toString(imageWidth).getBytes());
                stream.write(' ');
                stream.write(Integer.toString(imageHeight).getBytes());
                stream.write('\n');
                stream.write(Integer.toString(255).getBytes());
                stream.write('\n');

                /*
                 * Write each row of pixels.
                 */
                for (int y = 0; y < imageHeight; y++)
                {
                        for (int x = 0; x < imageWidth; x++)
                        {
                                int pixel = image.getRGB(x, y);
                                int b = (pixel & 0xff);
                                int g = ((pixel >> 8) & 0xff);
                                int r = ((pixel >> 16) & 0xff);
                                stream.write(r);
                                stream.write(g);
                                stream.write(b);
                        }
                }
                stream.flush();
        }
于 2011-08-31T12:19:43.333 に答える
0

(Java 標準)ではなくJAI (JAIクラス)を使用し、以下を使用します。ImageIO

JAI.create("ImageWrite", renderedImage, file, "pnm");
于 2011-09-10T02:33:09.087 に答える