servlet-imagen

seven
19 de Agosto del 2002
Como puedo hacer un servlet que muestre una imagen en el navegador?

Gracias

dariomf
19 de Agosto del 2002
La solucion pasa por hacer que el servlet le diga al browser que le va a mandar una imagen y no HTML, o sea :

response.setContentType("image/jpeg")

En tu servlet. Puse JPEG porque es el que uso yo en mis servlet y con el Java JPEG API podes crear y cargar imagenes JPEG con un Graphics. Asi, la creo en el servidor y la mando codificada al browser, en JPEG, con la consiguiente disminucion de tamaño.

Como ejemplo te tiro uno que yo desarrolle como prueba :

BufferedImage bi=new BufferedImage(320,240,java.awt.image.BufferedImage.TYPE_3BYTE_BGR);
Graphics2D g=null;
response.setContentType("image/jpeg");
JPEGImageEncoder jie;
JPEGImageDecoder jid;
jie=JPEGCodec.createJPEGEncoder(new DataOutputStream((OutputStream)response.getOutputStream()));
g=(Graphics2D)bi.getGraphics();
g.draw(new Rectangle(0,0,50,150));
g.draw3DRect(70,130,100,120,true);
FileInputStream fis=new FileInputStream("/archiv~1/vqserver/servlets/mapa/img.jpg");
BufferedImage bimg;
ImageObserver io;
bimg=JPEGCodec.createJPEGDecoder((InputStream)fis).decodeAsBufferedImage();
g.drawImage((Image)bimg,5,5,null);
g.drawString("Imagen generada desde un servlet",10,25);
jie.encode(bi);

Espero que te sirva.

Dario