无法将图像加载到屏幕上

时间:2014-02-20 23:19:04

标签: java image loading bufferedimage

我正在制作一款游戏而且我一直试图让图像进入屏幕。我说 -

java.lang.IllegalArgumentException: input == null!
    at javax.imageio.ImageIO.read(Unknown Source)

我确信我的图像路径是正确的路径,但它一直声明它不是。

background = new Background("C:/hello/flappybird.png");

我工作区的“调试”部分指出

存在问题
background.render(g);

具体来说,

g.drawImage(img,(int)x,(int)y,null);

我不知道为什么会这样做。我100%确定我的构建路径是正确的!

编辑:只是想知道后台类的构造函数:

public Background(String s) {

      try {
        img = ImageIO.read(this.getClass().getResource(s));
    } catch (IOException e) {
        e.printStackTrace();
    }

    }

2 个答案:

答案 0 :(得分:0)

此错误表示未找到图像文件。为了确保情况确实如此,我建议您直接执行ImageIO.read()并检查结果:

BufferedImage icon = ImageIO.read("C:/hello/flappybird.png");

此外,在类路径之外使用资源并不是一个好习惯。我强烈建议您更改类Background以使用类路径资源。在Background课程的某个地方,您可以添加:

public class Background {

    public Background(String filename) {
        // Some code here
        BufferedImage image = ImageIO.read(getClass().getResource("/resources/images/" + filename));
        // More code here
    }
}

答案 1 :(得分:0)

我找到了解决方案!

似乎在gamePanel中,在我宣布我的BufferedImage之后,我忘了添加 -

Graphics g = image.getGraphics();

抱歉,伙计们,我觉得XD很蠢。