我原本想知道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而受到支持。
答案 0 :(得分:2)
答案 1 :(得分:1)
要查看支持的图像格式:
要查看哪些文件可以阅读:ImageIO.getReaderFormatNames();
要查看可以写入哪些文件:ImageIO.getWriterFormatNames();
JOptionPane.showMessageDialog(null,"Java Image Formats:\r\nread:\t"+Arrays.toString(ImageIO.getReaderFormatNames())+"\r\nwrite:\t"+Arrays.toString(ImageIO.getWriterFormatNames()));
在Java中注册的图像类型将显示在列表中。