Помощь по добавлению плагина в Java ImageWriter - PullRequest
4 голосов
/ 01 июля 2011

Я пытаюсь сохранить BufferedImage в виде файла PNM. Я уже установил JAI (Java Advanced Imaging) и импортировал плагин PNMWriter. Тем не менее, я не знаю, как добавить его в мой ImageWriter, чтобы он мог писать в .pnm. Когда я запускаю ImageIO.getWriterFormatNames (), чтобы получить возможные имена форматов, появляются только стандартные (.png, .bmp, .jpg ....) ... Что делает

Ответы [ 2 ]

1 голос
/ 31 августа 2011

Я сам реализовал это для своего программного обеспечения. Это было всего 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();
        }
0 голосов
/ 10 сентября 2011

Используйте JAI (JAI класс), а не ImageIO (стандарт Java), используйте:

JAI.create("ImageWrite", renderedImage, file, "pnm");
...