CCDS677 2019-02-21 18:04 采纳率: 100%
浏览 452

ImageReader读取多页tiff文件时出错

代码如下,从网上找来的,读取一个8页的tiff文件时,当循环获取到第二页时出错

    private static void tiffToJPEGByImageIO(String tiff) {
        ImageInputStream input;
        try {
            input = ImageIO.createImageInputStream(new File(tiff));// 以图片输入流形式读取到tif
            // Get the reader
            ImageReader reader = ImageIO.getImageReaders(input).next();// 获得image阅读器,阅读对象为tif文件转换的流
            String path, tiffName;
            path = tiff.substring(0, tiff.lastIndexOf("."));
            tiffName = tiff.substring(tiff.lastIndexOf("/"),
                    tiff.lastIndexOf("."));
            try {
                reader.setInput(input);
                // Read page 2 of the TIFF file
                int count = reader.getNumImages(true);// tif文件页数
                // System.out.println(count);
                for (int i = 0; i < count; i++) {
                    BufferedImage image = reader.read(i, null);// **获取第二页时,这里出错**
                    File f = new File(path, "\\" + tiffName + "_" + i + ".jpg");
                    try {
                        if (!f.exists()) {
                            f.getParentFile().mkdirs();
                            f.createNewFile();
                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    ImageIO.write(image, "JPEG", f);// 保存图片
                }
            } finally {
                reader.dispose();
                input.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

错误信息如下:

```Caused by: java.lang.ArrayIndexOutOfBoundsException: 5679
at com.sun.media.jai.codecimpl.TIFFFaxDecoder.nextLesserThan8Bits(TIFFFaxDecoder.java:1488)
at com.sun.media.jai.codecimpl.TIFFFaxDecoder.decodeT6(TIFFFaxDecoder.java:964)
at com.sun.media.jai.codecimpl.TIFFImage.getTile(TIFFImage.java:1047)
at com.sun.media.jai.codecimpl.SimpleRenderedImage.getData(SimpleRenderedImage.java:462)
at com.sun.media.jai.codecimpl.SimpleRenderedImage.getData(SimpleRenderedImage.java:422)
at com.sun.media.jai.codecimpl.JPEGImageEncoder.encode(JPEGImageEncoder.java:170)
at com.sun.media.jai.opimage.EncodeRIF.create(EncodeRIF.java:74)
... 25 more

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 ads仿真结果在圆图上是怎么读数的
    • ¥20 Cotex M3的调试和程序执行方式是什么样的?
    • ¥20 java项目连接sqlserver时报ssl相关错误
    • ¥15 一道python难题3
    • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
    • ¥15 牛顿斯科特系数表表示
    • ¥15 arduino 步进电机
    • ¥20 程序进入HardFault_Handler
    • ¥15 oracle集群安装出bug
    • ¥15 关于#python#的问题:自动化测试