2013-01-11 40 views
0

我目前正在尝试为我正在处理的小游戏加载spritesheet。问题是,这段代码在这里:工作正常的ImageIO.read表达式突然停止这样做

private void load(){ 
    try { 
     BufferedImage image = ImageIO.read(Sprite.class.getResource(path)); 
     int w = image.getWidth(); 
     int h = image.getHeight(); 
     image.getRGB(0, 0, w, h, pixels, 0, w); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

ImageIO.read()总是返回null。它也不会抛出任何例外。很明显,我在下一行发生错误,因为我打电话image.getWidth(),因为图像是null

真正令我困扰的是,10分钟前相同的代码工作得很好。我没有改变任何东西,只是一个根本不影响阅读过程的价值;即使改回它也不会做任何事情。

有没有人知道该怎么办?

+0

您应该经常检查'ImageIO.read'的返回值,因为当图像无法解码时,返回空值是正常的返回值http://docs.oracle.com/javase/6/docs/ API /的javax/ImageIO的/ ImageIO.html#读取(java.net.URL中)。 – Michael

回答

0

我认为你的问题是在这里:

Sprite.class.getResource(path) 

你可以出此线并检查正确与否的路径。 当您的文件路径不正确时,会发生此问题。使用以下代码行检查文件路径:

System.out.println(Sprite.class.getResource(path)); 

然后您可以找到问题。

+0

是的,这帮助了我,虽然它不是问题。路径确实是正确的,但通过后面的提示,我发现图像文件已损坏 - 我不知道如何发生,但我解决了它:) – user1899069