¿Hay alguna forma de escalar una imagen y luego visualizarla en la página jsp? Cuando recupere y muestre las imágenes, quiero mostrar todas las fotos en el mismo tamaño. ¿Hay alguna API que pueda hacerlo? He buscado desde google, los que encontré trataban de escalar imágenes mediante el uso de tookit pero no funciona en la aplicación web.JSP ¿Cómo escalar una imagen?
Respuesta
Puede usar el built-in Java 2D API para esto (tutorial básico de Sun here).
Básicamente, es necesario crear un Servlet que obtiene un InputStream
de la imagen original en el método doGet()
, pasa a través de la API Java 2D y luego escribe en el OutputStream
de la respuesta HTTP. Luego, asigna este servlet a un determinado url-pattern
en web.xml
, p. /thumbs/*
y llame a este servlet en el atributo src
del elemento HTML <img>
.
Aquí hay un ejemplo básico patada de salida (que todavía tienen que hacer frente a condiciones inesperadas la manera que usted quiere):
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// First get image file name as request pathinfo (or parameter, whatever you want).
String imageFilename = request.getPathInfo().substring(1);
// And get the thumbnail dimensions as request parameters as well.
int thumbWidth = Integer.parseInt(request.getParameter("w"));
int thumbHeight = Integer.parseInt(request.getParameter("h"));
// Then get an InputStream of image from for example local disk file system.
InputStream imageInput = new FileInputStream(new File("/images", imageFilename));
// Now scale the image using Java 2D API to the desired thumb size.
Image image = ImageIO.read(imageInput);
BufferedImage thumb = new BufferedImage(thumbWidth, thumbHeight, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics2D = thumb.createGraphics();
graphics2D.setBackground(Color.WHITE);
graphics2D.setPaint(Color.WHITE);
graphics2D.fillRect(0, 0, thumbWidth, thumbHeight);
graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
graphics2D.drawImage(image, 0, 0, thumbWidth, thumbHeight, null);
// Write the image as JPG to the response along with correct content type.
response.setContentType("image/jpeg");
ImageIO.write(thumb, "JPG", response.getOutputStream());
}
Con el servlet asignada en web.xml
de la siguiente manera:
<servlet>
<servlet-name>thumbServlet</servlet-name>
<servlet-class>com.example.ThumbServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>thumbServlet</servlet-name>
<url-pattern>/thumbs/*</url-pattern>
</servlet-mapping>
Esto puede ser usado de la siguiente manera:
<img src="thumbs/filename.jpg?w=100&h=100" width="100" height="100">
Nota: no, esto no se puede hacer solo con JSP, ya que es una tecnología de visualización inadecuada para esta tarea.
Nota 2: esta es una tarea bastante costosa (intensiva de la CPU), tenga esto en cuenta. Es posible que desee considerar caché o pregenerar los pulgares de antemano usted mismo.
Nota: no, esto no se puede hacer con JSP solos ya que es una vista de la tecnología inadecuado para esta tarea.
Técnicamente puedes hacerlo, pero de hecho no es algo recomendable.
Y sí, guardaría en caché las imágenes durante mucho tiempo, junto con algo para identificar los cambios en el original, luego recrearé la imagen redimensionada solo si el original cambia (o el caché expira, tal vez una semana después de la imagen fue visitado por última vez).
- 1. Escalar una imagen en GTK
- 2. Escalar una imagen en GWT
- 3. escalar una imagen, pero mantener sus proporciones
- 4. Cómo escalar píxeles en una imagen para ajustar el brillo?
- 5. Android cómo escalar una imagen con las opciones de BitmapFactory
- 6. ¿Cómo escalar una imagen a pantalla completa usando JavaScript?
- 7. Cómo escalar una imagen en iOS, suavizada pero no suave?
- 8. Cómo escalar píxeles en pantalla?
- 9. Cómo escalar ejes en mplot3d
- 10. Cómo escalar glDrawPixels?
- 11. Mostrar BLOB (imagen) a través de JSP
- 12. Primavera: mostrar imagen en el archivo jsp
- 13. ¿Cómo comentar una expresión JSP?
- 14. Cómo rotar y escalar una homografía
- 15. Cómo escalar buildbot en una compañía
- 16. ¿Cómo agregar hacer clic y arrastrar para escalar una imagen en un SVG?
- 17. Cómo escalar una imagen GIF animada en PIL y conservar la animación
- 18. Cómo escalar una imagen en ImageView para mantener la relación de aspecto
- 19. ¿Cómo escalar con ESPer?
- 20. Escalar y Traducir animación
- 21. Imagen de fondo borrosa al escalar en iPad e iPhone
- 22. ImageMagick cambiar la relación de aspecto sin escalar la imagen
- 23. Multiplicar una tupla por un escalar
- 24. Escalar un SVG en Java
- 25. ¿Cómo puedo volcar una variable en JSP?
- 26. Cómo codificar uri una cadena en jsp?
- 27. Cómo importar constantes en una página JSP
- 28. ¿Cuál es la idea detrás de escalar una imagen usando lanczos?
- 29. cómo escalar alturas matplotlib subparcelas individual
- 30. ¿Cómo escalar a resolución en SDL?
Hice lo mismo, el borde de la imagen solo se muestra en el Excel. ¿Alguna idea? FYI Antes de que especificara el parámetro w y h que mostraba la imagen, pero no con el tamaño especificado. – Palani