【问题标题】:On Swing image formats and service providersOn Swing 图像格式和服务提供商
【发布时间】: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 的什么位置查找支持的图像格式?

【问题讨论】:

    标签: java image swing


    【解决方案1】:

    所有 JRE 都应支持 GIF、JPEG 和 PNG。

    作为任何特定 JRE 支持的更具体的答案,请参阅提供大量信息的 MediaTypes 源代码。

    【讨论】:

    • 我对它的简单程度感到有点傻,现在我看到了我错过的东西:ImageIO.getReaderMIMETypes()。也感谢有关跨平台 GIF/JPEG/PNG 的说明:您知道这是否在某处正式声明?
    • “你知道这是否在某处正式说明过吗?” 我确定我在文档或文档中模糊地看到过它教程。它的内容类似于“JRE 将支持各种类型的图像,但应包括 JPG、GIF 和PNG”..
    【解决方案2】:

    查看支持的图像格式:

    要查看可以读取哪些文件: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 中注册的图像类型将显示在列表中。

    【讨论】:

    • 那些逃逸对我有用,cf。这个screenshot
    猜你喜欢
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 2016-12-14
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    • 2014-04-04
    • 2020-09-21
    相关资源
    最近更新 更多