【发布时间】:2010-09-12 07:14:39
【问题描述】:
我正在使用 Java 读取图像文件
java.awt.Image img = Toolkit.getDefaultToolkit().createImage(filePath);
在某些系统上这不起作用,它会引发 AWTError 抱怨 sun/awt/motif/MToolkit。
您还能如何从图像文件创建 java.awt.Image 对象?
【问题讨论】:
我正在使用 Java 读取图像文件
java.awt.Image img = Toolkit.getDefaultToolkit().createImage(filePath);
在某些系统上这不起作用,它会引发 AWTError 抱怨 sun/awt/motif/MToolkit。
您还能如何从图像文件创建 java.awt.Image 对象?
【问题讨论】:
在某些系统上添加“-Djava.awt.headless=true”作为 java 参数可能会有所帮助。
【讨论】:
ImageIO 中有几个静态方法允许从不同来源读取图像。您的案例中最有趣的是:
BufferedImage read(ImageInputStream stream)
BufferedImage read(File input)
BufferedImage read(InputStream input)
我检查了里面的代码。它使用 ImageReader 抽象类,并且有 3 个实现者:JPEGReader。 PNGReader 和 GIFReader。这些类和 BufferedImage 显然不使用任何本机方法,因此它应该始终有效。
您遇到的 AWTError 似乎是因为您在无头配置中运行 java,或者 Windows 工具包存在某种问题。不看具体的错误很难说。此解决方案将允许您读取图像(可能),但根据您想要对其执行的操作,稍后可能会在您尝试显示它时抛出 AWTError。
【讨论】:
【讨论】: