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



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

A) What is working fine

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

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

A) My Issue

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

     comgithubjaiimageioimplpluginstiffTIFFImageWriter.class 
     comgithubjaiimageioimplpluginstiffTIFFImageWriterSpi.class 

不幸的是,当执行相同的代码时,it. hasnext ()返回false,即使用ImageIO.scanForPlugins();*未能注册TIFF写入器因此也抛出了这个异常:

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

尽管JAI映像I/O已经在类路径中(否则Eclipse运行将失败)

使用以下代码:

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

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

最新更新