如何在Java中正确加载BufferedImage?

43

好的,我一直在尝试使用以下代码加载 BufferedImage:

URL url = this.getClass().getResource("test.png");
BufferedImage img = (BufferedImage) Toolkit.getDefaultToolkit().getImage(url);

但是当我运行它时,这给了我一个类型转换错误,那么我该如何正确加载BufferedImage?


即使您有使用Toolkit而不是ImageIO的理由,这也不是最佳调用方法,因为它会在您完成后仍然保留图像。更好的调用方法是Toolkit.createImage(URL url)。 - MiguelMunoz
转换失败:Oracle-Java 8 中的 sun.awt.image.ToolkitImage 无法转换为 java.awt.image.BufferedImage。 - Sam Ginrich
2个回答

108

请改用ImageIO.read()方法:

BufferedImage img = ImageIO.read(url);

1
如果你正在寻找一个纯Java的替代方案来代替ImageIO(例如出于安全原因),那么可以考虑使用Apache Commons Imaging - ATOMP

6
BufferedImage img = null;
try {
    img = ImageIO.read(new File("D:\\work\\files\\logo.jpg"));
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

2
可能不是捕获异常的最佳位置。 - Steve Smith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接