需要安装JAI Image I / O包。 https://java.net/projects/jai-imageio/

时间:2016-11-09 11:35:18

标签: java eclipse tiff jai

我有一个java程序,我添加 JAI Image I / O 以支持 TIFF 图像格式。

A)什么工作正常

此程序在 Eclipse环境中完美运行,此代码打印类名(我认为它是负责的)并且返回true 即TIFF图像编写器已注册:

    System.out.println(TIFFImageWriterSpi.class);
    ImageIO.scanForPlugins();
    Iterator<ImageWriter> it = ImageIO.getImageWritersByFormatName("tiff");
    System.out.println(it.hasNext());

A)我的问题

使用gradle打包项目。生成的JAR包含负责TIFF处理的类:

     com\github\jaiimageio\impl\plugins\tiff\TIFFImageWriter.class 
     com\github\jaiimageio\impl\plugins\tiff\TIFFImageWriterSpi.class 

不幸的是,当执行相同代码时, it.hasNext()返回false,即无法使用ImageIO 注册TIFF编写器 .scanForPlugins(); * 因此,这个例外也被抛出:

Need to install JAI Image I/O package. https://java.net/projects/jai-imageio/

虽然 JAI Image I / O 已经在类路径中(否则Eclipse运行会失败)

1 个答案:

答案 0 :(得分:0)

使用此代码:

IIORegistry.getDefaultInstance().registerServiceProvider(
             new TIFFImageWriterSpi(), ImageWriterSpi.class);

即使在ImageIO.scanForPlugins()时也可以手动注册任何ImageWriterSpi或ImageReaderSpi;失败。