servlet-imagen
Como puedo hacer un servlet que muestre una imagen en el navegador?
Gracias
Gracias
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
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
