ImageIO未加载图像

时间:2013-04-13 12:04:24

标签: java image loading

我在使用java代码加载图片时遇到问题。我将图像,i.png放在与此代码所在类相同的包中。这是代码。

    Image img;
    try
    {
        img = ImageIO.read(new File("i.png"));
    }
    catch(IOException e)
    {
    }

当我执行此代码时,它会抛出IOException并说它无法读取输入文件 有人会知道它为什么会抛出这个例外 对不起,措辞不好 我的意思是代码抛出一个异常然后你明显不能在代码中使用它(这就是我得到的熬夜到11:30)
谢谢你的帮助!

2 个答案:

答案 0 :(得分:2)

在代码中硬编码路径或将资源保留在同一个包中只是为了方便访问,这是一种不好的做法。 您可以提供硬编码路径或使用getResourceAsStream

getResourceAsStream的文档说

  

查找具有给定名称的资源。资源是一些数据(图像,音频,文本等),可以通过类代码以独立于代码位置的方式访问。

这就是你想要的代码。

阅读this回答,以便更清楚地了解访问资源的文件方式与访问资源的类加载器方式。

因此,通过一些修改,您的代码在更改时会起作用 -

public class TestIt {
public static void main(String[] args) throws IOException {

Image img = null;
img = ImageIO.read(TestIt.class.getResourceAsStream( "i.png" ));
img.getGraphics();
System.out.println(img);
}

}

注意使用getResourceAsStream方法。

HTH

答案 1 :(得分:0)

您正在获取空指针异常,因为 img 变量在执行后保持为null img = ImageIO.read(新文件(“i.png”))。因为它保持为null,所以在尝试在代码中进一步使用时会出现空指针异常。

以下是您的解决方案:

BufferedImage img = ImageIO.read(new File("i.png"));

此致 拉维