当Toolkit.getDefaultToolkit()抛出AWTError时,如何读取Java中的图像?
时间:2020-03-06 14:35:14 来源:igfitidea点击:
我正在使用Java阅读图像文件
java.awt.Image img = Toolkit.getDefaultToolkit().createImage(filePath);
在某些系统上,这不起作用,而是抛出一个AWTError,抱怨sun / awt / motif / MToolkit。
我们还可以如何从图像文件创建java.awt.Image对象?
解决方案
我使用ImageIO读取图像。
Image i = ImageIO.read(InputStream in);
javadoc也将提供更多信息。
ImageIO中有几种静态方法可以读取不同来源的图像。在情况下,最有趣的是:
BufferedImage read(ImageInputStream stream) BufferedImage read(File input) BufferedImage read(InputStream input)
我检查了代码中的内容。它使用ImageReader抽象类,并且有三个实现器:JPEGReader。 PNGReader和GIFReader。这些类和BufferedImage显然不使用任何本机方法,因此它应始终有效。
我们遇到的AWTError似乎是因为我们在无头配置中运行Java,或者Windows工具箱出现了某种问题。但是,如果不看具体的错误就很难说了。此解决方案将允许我们(可能)读取图像,但是根据我们要使用的图像,以后尝试显示图像时可能会引发AWTError。
在某些系统上,将" -Djava.awt.headless = true"添加为java参数可能会有所帮助。