2009-06-17 9 views
0

J'essaye de lire une image qui se trouve quelque part sur le web depuis mon programme Java. Jusqu'à présent, j'ai chargé avec succès une image en utilisant le code suivant.Récupérer une image du web dans java

URL url = new URL("http://www.google.com/images/nav_logo4.png"); 
Image img = Toolkit.getDefaultToolkit().getImage(url); 

Ce que je veux savoir pourquoi ce code (qui est le premier j'ai essayé) ne fonctionne pas:

BufferedImage img = ImageIO.read(new File("http://www.google.com/images/nav_logo4.png")); 

Cela aurait l'avantage de me donner un BufferedImage. Aussi, comment puis-je faire le bloc de code ci-dessus jusqu'à ce que l'image est chargée? Je sais que je peux utiliser un ImageObserver, mais y a-t-il un moyen plus simple?

Lorsque je tente la deuxième option, je reçois cette exception:

javax.imageio.IIOException: Can't read input file! 

Répondre

3

A File ne peut pas se référer à une URL.

Bien que je ne l'ai pas essayé, il semble y avoir une méthode ImageIO.read(URL), qui peut prendre une URL comme entrée en tant qu'objet URL.

Je présume qu'il serait appelé comme suit:

ImageIO.read(new URL("http://url/to/my/image.png")); 
+0

: D j'étais sur le point de marquer cette question une réponse que je trouve la solution que vous proposez sur la mienne maintenant. Merci quand même votre réponse était correcte. –

+0

Bon d'entendre que la solution fonctionne :) – coobird

1

objets File cant lus à partir des URL

+0

Bien que la solution a été postée, c'est la vraie réponse à la question. java.io.File ne peut pas lire les URL. – Freddy

+0

vous avez raison. Je sais que je devrais promouvoir cette réponse, car elle répond à ma question. J'ai choisi l'autre parce que cela offrait une solution: D j'aurais dû reformuler la question je suppose ... –

Questions connexes