Есть ли какой-либо способ масштабирования изображения, а затем отображение на странице jsp? Когда вы извлекаете и показываете изображения, я хочу показать все фотографии одного размера. есть ли какой-либо API-интерфейс? Я искал из google, те, что я нашел, касались масштабирования изображений, используя takeit, но не могут работать в веб-приложении.JSP Как масштабировать изображение?
ответ
Вы можете использовать встроенный Java 2D API для этого (основной учебник Sun here).
В принципе, вам нужно создать Servlet, который получает InputStream
исходного изображения в методе doGet()
, передает его через Java 2D API, а затем записывает его в OutputStream
ответа HTTP. Затем вы просто наведите этот сервлет на определенный url-pattern
в web.xml
, например. /thumbs/*
и назовите этот сервлет в атрибуте src
элемента HTML <img>
.
Вот простой пример стартового (вам все еще нужно обрабатывать неожиданные условия себя так, как вы хотите):
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());
}
С сервлета отображенной в web.xml
следующим образом:
<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>
Это может быть используется следующим образом:
<img src="thumbs/filename.jpg?w=100&h=100" width="100" height="100">
Примечание: нет, это невозможно сделать с JSP, так как это технология просмотра, непригодная для этой задачи.
Примечание 2: Это довольно дорогостоящая (интенсивная работа с ЦП) задача, помните об этом. Возможно, вы захотите рассмотреть возможность кэширования или предварительного форматирования пальцев заранее.
Примечание: нет, это не может быть сделано с JSP только поскольку это вид технологии непригодны для решения этой задачи.
Технически вы можете это сделать, но на самом деле это не то, что желательно.
И да, я бы долго кешировал изображения вместе с чем-то, чтобы идентифицировать изменения оригинала, а затем воссоздать измененное изображение только в том случае, если исходные изменения (или срок действия кеша истекает, может быть, через неделю после изображения был в последний раз доступ).
- 1. Как масштабировать изображение (динамическое изображение)
- 2. Как масштабировать изображение TabBarItem
- 3. Как масштабировать фоновое изображение
- 4. Как вверх масштабировать изображение {PHP}
- 5. Python/Pillow: Как масштабировать изображение
- 6. как лучше масштабировать изображение? (bootstrap)
- 7. Как масштабировать изображение до maxSize?
- 8. Как масштабировать изображение в холсте?
- 9. Масштабировать изображение в HTML
- 10. Масштабировать изображение в спрайте
- 11. Как я могу масштабировать элемент как изображение?
- 12. Масштабировать изображение для отображения.contentWidth, display.contentHeight
- 13. Хорошо масштабировать изображение в Delphi?
- 14. Невозможно масштабировать изображение в UITableViewCell
- 15. Как масштабировать изображение в cms Magento
- 16. Как постоянно масштабировать изображение ImageMagick ++ на Ubuntu?
- 17. Как масштабировать изображение в CSS на Qualtrics?
- 18. Как быстро масштабировать изображение на другом изображении
- 19. Как автоматически масштабировать изображение для всех разрешений?
- 20. iOS Swift: как правильно масштабировать изображение?
- 21. Как масштабировать изображение на основе его вращения
- 22. Как масштабировать изображение с помощью openGL (JGL)?
- 23. Как масштабировать изображение для заполнения экрана
- 24. Как масштабировать изображение Graphics2D с прозрачным дополнением
- 25. Фоновое изображение - как правильно масштабировать только css
- 26. Как масштабировать, поворачивать и обрезать изображение
- 27. Как панорамировать/масштабировать изображение и наложение одновременно?
- 28. Как центрировать или масштабировать изображение ZoomButton?
- 29. Как масштабировать изображение до центра в CircledImageView
- 30. самозагрузки 3: Как масштабировать центрированное изображение
Я сделал то же самое, изображение границы отображалось только в excel. Любая идея? FYI Прежде чем указать параметры w и h, изображение отображалось, но не с указанным размером. – Palani