Почему это:Image 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
Edit: Мой вопрос, прежде чем я понял, что ответ был на самом деле, как я должен исправить это. Я установил ее, выполнив следующие действия:
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(), которая всегда возвращает полностью загруженное изображение. –
Хорошо, я обновил свой вопрос с помощью медиатракера, который теперь возвращает правильную ширину, и hegiht все же кажется неэффективным, учитывая, что это только для ДВУХ изображений, но их будет больше. Я предполагаю, что есть лучший способ импортировать фотографию в качестве ресурса и лучше получить ширину и высоту. @RussellZahniser – ComputerLocus
Все, что вам нужно, это 'image = ImageIO.read (url)'. Тогда 'image.getWidth()' будет корректным с самого начала, без необходимости в MediaTracker. –