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