Comment puis-je obtenir la hauteur et la largeur d'une image?
Pourquoi le code suivant renvoie la Hauteur: -1 ce qui signifie que la hauteur n'est pas encore connu. Comment obtenir la hauteur de l'image?
try {
//Create a URL for the image's location
URL url = new URL("http://bmw-2006.auto-one.co.uk/wp-content/uploads/bmw-m3-2006-3.jpg");
//Get the image
java.awt.Image image = Toolkit.getDefaultToolkit().createImage(url);
System.out.println("Height: " + image.getHeight(null));
} catch (MalformedURLException e) {
} catch (IOException e) {
}
Vraiment? Chrome M3?
Double Possible de stackoverflow.com/questions/672916/... - selon que l'utilisation de l'AWT Image de la classe est nécessaire.
J'allais dire quelque chose à propos de Java ne pas vouloir regarder l'image trop longtemps d'être le problème ...
Double Possible de stackoverflow.com/questions/672916/... - selon que l'utilisation de l'AWT Image de la classe est nécessaire.
J'allais dire quelque chose à propos de Java ne pas vouloir regarder l'image trop longtemps d'être le problème ...
OriginalL'auteur Radek | 2011-11-18
Vous devez vous connecter pour publier un commentaire.
Utilisation
ImageIO.lire(URL)
ouImageIO.lire(Fichier)
à la place. Il bloque pendant le chargement, et la largeur de l'image & hauteur sera connu après il retourne.E. G.
Alternativement, ajouter un
MediaTracker
à l'image d'être chargés de manière asynchrone par leTrousse à outils
et attendre jusqu'à ce qu'elle soit complètement chargée.OriginalL'auteur Andrew Thompson
Vous voulez quelque chose comme ceci:
La
java.awt.Toolkit
approche ne bloque pas, il en sera de retour -1 et en informer l'observateur (ou pas, dans votre cas, parce que c'est nul) lorsqu'il est chargé. Si vous ne le souhaitez de manière asynchrone, alors vous aurez besoin de fournir un rappel sous la forme d'une image à l'observateur.Oh, et ne pas simplement ignorer les exceptions, au moins imprimer la trace de la pile!
OriginalL'auteur Michael Berry
Parce que l'image est chargé de manière asynchrone, en arrière-plan.
Comme le
getHeight()
javadoc dit, vous devez fournir un ImageObserver (au lieu denull
), qui est appelée lorsque l'image a été chargé.OriginalL'auteur Joonas Pulakka
Toolkit#createImage(...)
est non-bloquant. En général, je préfère utiliserjavax.imageio.ImageIO
de lire des images.Attendre le
Toolkit#createImage(...)
, utilisation:Après cela, vous pouvez appeler
image.getHeight()
OriginalL'auteur Ingo Kegel
createImage s'exécute en arrière-plan pour charger l'Image.
utiliser un MediaTracker à attendre pour le chargement et ensuite utiliser getHeight (et utiliser un valide ImageObserver pour éviter les erreurs)
OriginalL'auteur Hachi