2010-10-21 87 views
14

Tengo servlet en mi aplicación web que sirve imágenes, y cuando visito esas URL con las imágenes del navegador, el servidor funciona correctamente. Luego tengo este otro servlet que cambia el tamaño de las imágenes, la idea es visitar obtener imagen por URL en el tamaño del servlet y luego cambiar el tamaño de la imagen. Pero por alguna razón, todos los métodos siguientes devuelven nulo, pero cuando visito una URL determinada con el navegador, la imagen se muestra correctamente.¿Cómo puedo leer una imagen desde una 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

¿Acabas de probar: imageURL.openStream() para ver si no es un problema de conexión de red (el navegador se conecta pero no la JVM) – Vinze

Respuesta

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); 

Actualización:

Este código funciona para mí intentar comprobar su dirección 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); 
} 

de salida:

[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

Como puedes ver, lo intenté, pero me devolvió el valor nulo. – newbie

+0

@newbie @ T.J. Crowder me perdí esa cosa :), ¿por qué has marcado url? mi código está funcionando como ... –

+0

@newbie: intente con otras URL, por ejemplo, configure 'fullUrl =" http://www.digitalphotoartistry.com/rose1.jpg ";' –

0

De the docs:

Si no hay ImageReader reclamaciones registradas para poder leer la secuencia resultante, se devuelve null.

¿Podría ser que no haya registrado ImageReader para el tipo de imagen?

+0

Descubrí que la imagen de obtención de servlets no tiene derechos de acceso al servlet que sirve la imagen, por lo que el resultado siempre fue nulo. – newbie

+0

@newbie: Extraño, esperaba una 'IOException'. –

Cuestiones relacionadas