【问题标题】:Error converting PNG to TIFF-Java将 PNG 转换为 TIFF-Java 时出错
【发布时间】:2013-08-09 19:22:53
【问题描述】:

您好,我正在研究以下 sn-p,它应该将我的 png 文件转换为 tiff。

            String fileName = "4848970_1";
            // String fileName = "color";
            String inFileType = ".PNG";
            String outFileType = ".TIFF";

            File fInputFile = new File("C:\\Users\\abc\\Downloads\\image2.png");
            InputStream fis = new BufferedInputStream(new FileInputStream(fInputFile));
            ImageReaderSpi spi = new PNMImageReaderSpi();
            ImageReader reader = spi.createReaderInstance();
            ImageInputStream iis = ImageIO.createImageInputStream(fis);
            reader.setInput(iis, true);
            BufferedImage bi = reader.read(0);

            int[] xi = bi.getSampleModel().getSampleSize();

            for (int i : xi) {
                System.out.println("bitsize " + i);
            }

            ImageWriterSpi tiffspi = new TIFFImageWriterSpi();
            TIFFImageWriter writer = (TIFFImageWriter) tiffspi.createWriterInstance();

            // TIFFImageWriteParam param = (TIFFImageWriteParam) writer.getDefaultWriteParam();
            TIFFImageWriteParam param = new TIFFImageWriteParam(Locale.US);
            String[] strings = param.getCompressionTypes();
            for (String string : strings) {
                System.out.println(string);
            }

            //param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
            //param.setCompressionType("LZW");

            File fOutputFile = new File("C:\\Users\\abc\\Downloads\\" + fileName + outFileType);
            OutputStream fos = new BufferedOutputStream(new FileOutputStream(fOutputFile));
            ImageOutputStream ios = ImageIO.createImageOutputStream(fos);

            writer.setOutput(ios);
            writer.write(null, new IIOImage(bi, null, null), param);

            ios.flush();
            writer.dispose();
            ios.close();

但这给了我以下错误

Exception in thread "main" java.lang.RuntimeException: What in the stream isn't a PNM image.
    at com.sun.media.imageioimpl.plugins.pnm.PNMImageReader.readHeader(PNMImageReader.java:187)
    at com.sun.media.imageioimpl.plugins.pnm.PNMImageReader.read(PNMImageReader.java:301)
    at javax.imageio.ImageReader.read(Unknown Source)
    at com.imageconv.TiffImage.main(TiffImage.java:40)

是它无法读取 PNG 文件还是将其识别为非 png 文件。我在哪里错了吗?

【问题讨论】:

    标签: java png tiff javax.imageio jai


    【解决方案1】:

    您正在尝试像读取 PNM 图像一样读取 PNG 图像。这两种文件格式没有共同之处。因此错误。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-31
    • 1970-01-01
    • 2010-09-23
    • 2013-03-03
    • 1970-01-01
    • 1970-01-01
    • 2017-06-10
    • 2012-02-17
    相关资源
    最近更新 更多