6

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

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

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

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

4

3 回答 3

6

我使用ImageIO读取图像。

Image i = ImageIO.read(InputStream in);

javadoc 也将提供更多信息。

于 2008-09-23T08:35:32.163 回答
2

ImageIO 中有几个静态方法允许从不同来源读取图像。在您的情况下,最有趣的是:

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

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

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

于 2008-09-23T08:45:15.823 回答
0

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

于 2008-09-23T09:50:53.027 回答