我不能使用jai-imageio / jai-imageio-jpeg2000

问题描述

我正在尝试使用原始java.net项目jai-imageio-core(在上游不再可用)的社区派生,并用它来编写jpeg2000图像。核心imageIO项目的分支位于:here

并且jpeg2000 spi位于:here

我只是尝试为jpeg2000 spi运行最简单的测试之一:

    IIORegistry registry = IIORegistry.getDefaultInstance();
    registry.registerServiceProvider(new com.github.jaiimageio.jpeg2000.impl.J2KImageReaderSpi());
    
    String[] suff = ImageIO.getWriterFileSuffixes();
    Iterator<ImageWriter> writers = ImageIO.getimageWritersBySuffix("jp2");

但是它找不到任何可以处理此jp2扩展名的ImageWriter。但是,它是在J2KImageReaderSpi类中正确定义的。

我检测到的是JVM(我正在使用Java 8)未将fork用于imageio,而是使用了JDK认imageio版本。这可能是我的问题的原因。我做错了什么?

解决方法

items    quantity 
item1        1
item2        2
item3        2
item4        4
item4        1
item5        1

我做错了什么?

您正在注册registry.registerServiceProvider(new J2KImageReaderSpi()); Reader ),而您正在寻找J2KImageReaderSpi Writer )。

如果要编写JPEG2000,请尝试注册J2KWriter

J2KImageWriterSpi

尽管我认为,如果JAR包含正确的registry.registerServiceProvider(new J2KImageWriterSpi()); 条目,并且您将JAR放在类路径上,这应该会自动发生。

,

haraldK的回答是正确的。有效。不幸的是,我做了我在另一个satckoverflow问题中看到的事情,并且没有检查我是否未尝试注册J2KImageWriterSpi