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

I can't use 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。但是,它在 J2KImageReaderSpiclass.

中正确定义

我检测到的是 JVM(我使用的是 Java 8)不使用 imageio 的分支,而是使用 JDK 默认的 imageio 版本。这可能是我的问题的原因。我做错了什么?

registry.registerServiceProvider(new J2KImageReaderSpi());

What did I do wrong?

您正在注册 J2KImageReaderSpi (Reader),而您正在寻找 J2KWriter (作家).

如果您想写入 JPEG2000,请尝试注册 J2KImageWriterSpi

registry.registerServiceProvider(new J2KImageWriterSpi());

虽然我认为如果 JAR 包含正确的 META-INF/services 条目并且您将 JAR 放在 class 路径上,这应该会自动发生。