为什么这样:
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);
为-1
和width
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);
我现在遇到的问题是,这似乎不是很有效,似乎我只需要导入两个图像和给定大小就需要这么多代码。有没有更好更有效,更容易的方法呢?
答案 0 :(得分:4)
根据Javadoc:
如果宽度尚不知道,则此方法返回-1和 稍后会通知指定的ImageObserver对象。
为了响应您的修改,并按照Russell的评论,请使用ImageIO.read()
代替获得完整加载的图片。