【发布时间】:2014-07-20 03:04:56
【问题描述】:
我最初想知道 Swing 独立于平台支持哪些图像格式。 Swing 是我的首选工具包,我正在尝试研究在我的爱好工作中使用哪种图像格式的决定。一旦我知道哪些格式是固有支持的,我将决定是使用其中一种更简单,还是更容易找到并使用获得适当许可的第三方库。但是,我遇到了一个障碍,我需要帮助来解决我哪里出错了。
我已经对 javax.imageio API 进行了一些挖掘,但我尝试通过执行以下操作来确定我的 PC 支持哪些格式,但没有成功:
package iiortester;
import javax.imageio.spi.IIORegistry;
import javax.imageio.spi.ImageReaderSpi;
public class IIORTester {
public static void main(String[] args) {
IIORegistry iioRegistry = IIORegistry.getDefaultInstance();
ImageReaderSpi imageReaderSpi =
iioRegistry.getServiceProviderByClass(ImageReaderSpi.class);
System.out.println(imageReaderSpi); // output is null
}
}
当我调用ServiceRegistry.getCategories() 时,默认的IIORegistry 实例确实报告了ImageReaderSpi 类别,但是当我尝试在上面的代码中获取图像阅读器服务提供者接口时,我收到了null 引用。这可能暗示我不会以正确的方式进行此操作,并且我查询ImageReaderWriterSpi.getFormatNames() 的计划已被挫败。但是,即使它成功报告了支持的图像格式,也不能告诉我这些格式是否在任何 JVM 中都受支持,或者是否因为我运行的是 Windows 7 JVM 而受支持。
我找错地方了吗?大概。我应该去哪里找?我不知道。 JVM 甚至有内置的 ImageIO 服务提供者,还是只是为了第三方库注册? 软件可以在 Swing API 的什么位置查找支持的图像格式?
【问题讨论】: