当Toolkit.getDefaultToolkit()抛出AWTError时,如何用Java读取图像?

StackOverflow https://stackoverflow.com/questions/119857

  •  02-07-2019
  •  | 
  •  

我正在使用

在Java中读取图像文件
java.awt.Image img = Toolkit.getDefaultToolkit().createImage(filePath);

在某些系统上,这不起作用,而是抛出一个抱怨sun / awt / motif / MToolkit的AWTError。

如何从图像文件创建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参数可能会有帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top