2010-10-21 5 views
14

J'ai servlet dans mon application web qui sert des images, et quand je visite ces URL avec des images du navigateur sont serveur correctement. Ensuite, j'ai cette autre servlet qui redimensionne les images, l'idée est de visiter get image par url dans resize servlet et ensuite redimensionner l'image. Mais pour une raison quelconque, toutes les méthodes suivantes retournent null, mais quand je visite url donné avec le navigateur, l'image est affichée correctement.Comment puis-je lire une image à partir d'une URL en Java?

URL imageURL = new URL(fullUrl); 
    // Case 1 
    RenderedImage img = ImageIO.read(imageURL); 

    // Case 2 
    BufferedImage img = JAI.create("url", imageURL).getAsBufferedImage(); 

    // Case 3 
    Image img = java.awt.Toolkit.getDefaultToolkit().getDefaultToolkit().createImage(imageURL); 
+0

Avez-vous essayé: imageURL.openStream() pour voir si ce n'est pas un problème de connexion réseau (le navigateur se connecte mais pas la JVM) – Vinze

Répondre

22
URL url = new URL("http://www.digitalphotoartistry.com/rose1.jpg"); 
Image image = ImageIO.read(url); 

ou

URL url = new URL("http://www.digitalphotoartistry.com/rose1.jpg"); 
java.awt.Image image = java.awt.Toolkit.getDefaultToolkit().createImage(url); 

Mise à jour:

Ce code fonctionne pour moi Essayez de vérifier votre URL.

public static void main(String[] args) throws Exception { 
    URL imageURL = new URL("http://www.digitalphotoartistry.com/rose1.jpg"); 
    // Case 1 
    RenderedImage img = ImageIO.read(imageURL); 
    System.out.println(img); 
} 

sortie:

[email protected]: type = 5 ColorModel: #pixelBits = 24 numComponents = 3 col 
or space = [email protected] transparency = 1 has alpha = fa 
lse isAlphaPre = false ByteInterleavedRaster: width = 553 height = 737 #numDataE 
lements 3 dataOff[0] = 2 
+1

Comme vous pouvez le voir, j'ai essayé, mais il est retourné null. – newbie

+0

@newbie @ T.J. Crowder J'ai manqué cette chose :), btw avez-vous vérifié url? mon code fonctionne comme .. –

+0

@newbie: essayez avec d'autres URL, par exemple set 'fullUrl =" http://www.digitalphotoartistry.com/rose1.jpg ";' –

0

De the docs:

Si non Enregistrés ImageReader prétend être en mesure de lire le flux résultant, null est retourné.

Est-il possible que vous n'ayez pas enregistré ImageReader pour le type d'image?

+0

J'ai découvert que servlet obtenant l'image n'a pas avoir les droits d'accès à servlet desservant l'image, donc le résultat était toujours nul. – newbie

+0

@newbie: Bizarre, j'aurais attendu une 'IOException'. –

Questions connexes