0

PackBits 圧縮で圧縮された TIFF をロードするために Apache-Commons Sanselan を使用しようとすると、すぐに使用できる ArrayIndexOutOfBoundsException が発生します。

コード:

import org.apache.sanselan.*;

public class TIFFHandler {
    public static Image loadTIFF(String fileName) throws ImageReadException, IOException {
        File imageFile = new File(fileName);
        BufferedImage bi = Sanselan.getBufferedImage(imageFile);
        return bi;
    }

    public static void main(String[] args) throws IOException, ImageReadException {
        String TIFFFILE = "test_image.tif";
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        JPanel panel = new JPanel();
        BufferedImage bi = (BufferedImage) loadTIFF(TIFFFILE);
        ImageIcon ii = new ImageIcon(bi);
        JLabel lbl = new JLabel(ii);
        panel.add(lbl);
        frame.setVisible(true);
    }
}

スタックトレース:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 426
at org.apache.sanselan.common.PackBits.decompress(PackBits.java:55)
at org.apache.sanselan.formats.tiff.datareaders.DataReader.decompress(DataReader.java:127)
at org.apache.sanselan.formats.tiff.datareaders.DataReaderStrips.readImageData(DataReaderStrips.java:96)
at org.apache.sanselan.formats.tiff.TiffImageParser.getBufferedImage(TiffImageParser.java:505)
at org.apache.sanselan.formats.tiff.TiffDirectory.getTiffImage(TiffDirectory.java:163)
at org.apache.sanselan.formats.tiff.TiffImageParser.getBufferedImage(TiffImageParser.java:441)
at org.apache.sanselan.Sanselan.getBufferedImage(Sanselan.java:1264)
at org.apache.sanselan.Sanselan.getBufferedImage(Sanselan.java:1255)
at TIFFHandler.loadTIFF(FieldSheetHandler.java:42)
at TIFFHandler.main(FieldSheetHandler.java:90)

問題の分析を試みましたが、かなり迷っています...指示があれば本当に役に立ちます。TIFF 画像は a** の苦痛です。

4

1 に答える 1

1

ApacheスナップショットリポジトリからCommonsImagingの更新バージョンを試すことができます。Javadocはまだオンラインではありません。SVNからコードをチェックアウトして、を実行してJavadocをビルドする必要がありますmvn javadoc:javadoc

さらに問題を見つけたり、改善を提案したい場合は、JIRAに提出できます。また、APIの使用法について質問がある場合は、開発者が喜んでお手伝いします。彼らはメーリングリストであなたを待っています。

于 2012-05-23T14:57:02.100 に答える