2

我无法使用 java 代码加载图像。我有图像,i.png 与此代码所在的类在同一个包中。这是代码。

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

当我执行此代码时,它会抛出一个 IOException 并说它无法读取输入文件。
有谁知道它为什么会抛出该异常 对不起,我所说的措辞不好,代码会抛出异常,然后您显然不能在代码的后面使用它(这就是我熬夜到 11:30 的结果)
谢谢帮助!

4

2 回答 2

2

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

getResourceAsStream 的文档说

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

这就是您想要的代码。

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

因此,通过一些修改,您的代码在像这样更改时可以工作 -

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 方法的使用。

高温高压

于 2013-04-13T12:59:53.260 回答
0

您收到空指针异常,因为您的img变量在执行 img = ImageIO.read(new File("i.png"))后保持为空。因为它保持为空,所以您在尝试在代码中进一步使用它时会遇到空指针异常。

这是您的解决方案:

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

问候,拉维

于 2013-04-13T12:17:44.293 回答