2010-10-21 8 views
14

Ho un servlet nella mia applicazione Web che serve le immagini e quando visito quegli URL con le immagini del browser il server è correttamente. Poi ho questo altro servlet che ridimensiona le immagini, l'idea è di visitare l'immagine con l'url nel servlet di ridimensionamento e quindi ridimensionare l'immagine. Ma per qualche ragione tutti i seguenti metodi restituiscono null, ma quando visito l'url dato con il browser, l'immagine è mostrata correttamente.Come posso leggere l'immagine dall'URL in 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

hai appena provato: imageURL.openStream() per vedere se non è un problema di connessione di rete (il browser si connette ma non la JVM) – Vinze

risposta

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

o

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

Aggiornamento:

Questo codice funziona per me Prova a controllare il vostro 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); 
} 

uscita:

[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

Come puoi vedere, l'ho provato, ma ha restituito nulla. – newbie

+0

@newbie @ T.J. Crowder mi è sfuggita quella cosa :), beh hai controllato l'url? il mio codice funziona come .. –

+0

@newbie: prova con altri URL, ad esempio set 'fullUrl =" http://www.digitalphotoartistry.com/rose1.jpg ";' –

0

Da the docs:

Se non registrati ImageReader afferma di essere in grado di leggere il flusso risultante, null viene restituito.

Potrebbe non essersi registrato ImageReader per il tipo di immagine?

+0

Ho scoperto che servlet non ha ottenuto l'immagine avere i diritti di accesso al servlet che serve l'immagine, quindi il risultato era sempre nullo. – newbie

+0

@newbie: Dispari, mi sarei aspettato un 'IOException'. –

Problemi correlati