2
爲什麼會這樣:圖像的getWidth和getHeight返回-1不當
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);
問題我現在已經是這似乎不是很有效,也不看起來像我應該需要這麼多的代碼只是爲了兩個圖像導入並給予大小。有沒有更好的更有效和更簡單的方法來做到這一點?
一種替代方法是ImageIO.read(),它總是返回一個完全加載的圖像。 – 2012-01-07 01:15:29
好吧,我更新了我與現在返回正確的寬度和hegiht但似乎inefficent考慮只對兩個圖像仍然會有很多更多媒體跟蹤問題。我假設有一種更好的方式來將照片作爲資源導入,並以更好的方式獲得寬度和高度。 @RussellZahniser – ComputerLocus 2012-01-07 01:17:50
所有你需要的是'image = ImageIO.read(url)'。然後'image.getWidth()'從一開始就是正確的,不需要MediaTracker。 – 2012-01-07 01:22:52