【问题标题】:How do you read an image in Java when Toolkit.getDefaultToolkit() throws an AWTError?当 Toolkit.getDefaultToolkit() 抛出 AWTError 时,如何在 Java 中读取图像?
【发布时间】:2010-09-12 07:14:39
【问题描述】:

我正在使用 Java 读取图像文件

java.awt.Image img = Toolkit.getDefaultToolkit().createImage(filePath);

在某些系统上这不起作用,它会引发 AWTError 抱怨 sun/awt/motif/MToolkit。

您还能如何从图像文件创建 java.awt.Image 对象?

【问题讨论】:

    标签: java image awt


    【解决方案1】:

    在某些系统上添加“-Djava.awt.headless=true”作为 java 参数可能会有所帮助。

    【讨论】:

      【解决方案2】:

      ImageIO 中有几个静态方法允许从不同来源读取图像。您的案例中最有趣的是:

      BufferedImage read(ImageInputStream stream) 
      BufferedImage read(File input)
      BufferedImage read(InputStream input)
      

      我检查了里面的代码。它使用 ImageReader 抽象类,并且有 3 个实现者:JPEGReader。 PNGReader 和 GIFReader。这些类和 BufferedImage 显然不使用任何本机方法,因此它应该始终有效。

      您遇到的 AWTError 似乎是因为您在无头配置中运行 java,或者 Windows 工具包存在某种问题。不看具体的错误很难说。此解决方案将允许您读取图像(可能),但根据您想要对其执行的操作,稍后可能会在您尝试显示它时抛出 AWTError。

      【讨论】:

        【解决方案3】:

        我使用ImageIO阅读图像。

        Image i = ImageIO.read(InputStream in);
        

        javadoc 也会提供更多信息。

        【讨论】:

          猜你喜欢
          • 2014-08-18
          • 2019-09-02
          • 2016-04-10
          • 1970-01-01
          • 1970-01-01
          • 2014-02-13
          • 1970-01-01
          • 2015-10-13
          • 1970-01-01
          相关资源
          最近更新 更多