图像getWidth和getHeight不正确地返回-1

时间:2012-01-07 01:08:21

标签: java

为什么这样:

URL url = MinecraftPlatformGame.class.getResource("images/diamondPick.png");
image = Toolkit.getDefaultToolkit().getImage(url); 
int width = image.getWidth(null);
int height = image.getHeight(null);
System.out.println(width);
System.out.println(height);

-1width

返回height

编辑:在我弄清楚答案之前我的问题实际上是我应该如何修复它。 我通过执行以下操作来修复它:

URL url = MinecraftPlatformGame.class.getResource("images/diamondPick.png");
image = Toolkit.getDefaultToolkit().getImage(url); 
MediaTracker mTracker = new MediaTracker(this);
  mTracker.addImage(image,1);
        try {
            mTracker.waitForID(1);
        } catch (InterruptedException ex) {
            Logger.getLogger(MinecraftPlatformGame.class.getName()).log(Level.SEVERE, null, ex);
        }
int width = image.getWidth(null);
int height = image.getHeight(null);
System.out.println(width);
System.out.println(height);

url = MinecraftPlatformGame.class.getResource("images/gui.png");
image1 = Toolkit.getDefaultToolkit().getImage(url);
  mTracker.addImage(image1,2);
        try {
            mTracker.waitForID(2);
        } catch (InterruptedException ex) {
            Logger.getLogger(MinecraftPlatformGame.class.getName()).log(Level.SEVERE, null, ex);
        }
        width = image1.getWidth(null);
height = image1.getHeight(null);
System.out.println(width);
System.out.println(height);

我现在遇到的问题是,这似乎不是很有效,似乎我只需要导入两个图像和给定大小就需要这么多代码。有没有更好更有效,更容易的方法呢?

1 个答案:

答案 0 :(得分:4)

根据Javadoc:

  

如果宽度尚不知道,则此方法返回-1和   稍后会通知指定的ImageObserver对象。

为了响应您的修改,并按照Russell的评论,请使用ImageIO.read()代替获得完整加载的图片。