2009-06-03 2 views
4

У меня есть ByteArrayOutputStream, который содержит изображение JPEG в байтах. Мое требование - отобразить это изображение на странице JSP (чтобы отобразить изображение в интерфейсе с помощью HTML-тегов). Как мне это сделать?Как отобразить изображение, которое находится в байтах на странице JSP, используя теги HTML?

Я назвал класс BufferedImage, но это сбивает с толку для меня, потому что я новичок в этом.

ответ

3

Если вы используете "data" URI (подходит для небольших изображений), браузер выполнит два запроса: один для HTML и один для изображения. Вы должны иметь возможность выводить тег img, который содержит достаточно информации, чтобы вы могли ответить на последующий запрос изображения с данными в вашем ByteArrayOutputStream.

В зависимости от того, как вы получили этот файл JPEG и как масштабируется ваш сервер, это может включать запись изображения на диск, кэширование его в памяти, его восстановление или любую их комбинацию.

Если вы можете отложить создание изображения до тех пор, пока браузер не запрашивает фактическое изображение в первую очередь, это довольно хорошо. Это может включать в себя добавление дополнительных параметров в URL-адрес изображения - например, точки на графике или размер миниатюры для генерации или любое другое изображение.

Если вы новичок в JSP и HTML, я настоятельно рекомендую вам сначала сосредоточиться на стороне HTML. Разработайте то, что вам нужно для обслуживания, и что сделает браузер, прежде чем вы будете работать над тем, как обслуживать его динамически. Начните со статических страниц и файлов для HTML и изображений, а затем выясните, как их сгенерировать.

18

Если изображение не слишком большое, вы можете сделать это следующим образом.

<img src="data:image/jpg;base64,iVBORw0KGgoAAAANS..." /> 

Где iVBORw0KGgoAAAANS ... это Base64 закодированные байт.

Base64 кодирование может быть сделано с библиотекой, как Ostermiller Java Utilities' Base64 Java Library или org.apache.commons.codec.binary.Base64.

+0

Этот метод встраивает изображение в отображаемый html, который также может увеличить размер файла – Ram

+0

. Мое изображение очень мало. Его изображение в виде штрих-кода размером width = «166» height = «44» .. В выше, как я могу получить изображение из ByteArrayOutputStream? – 2009-06-03 09:07:57

+0

166x44 не совсем «очень маленький» (обычно URI данных используются для очень маленьких изображений), но с помощью штрих-кода вы можете с ним справиться. В основном вам нужно кодировать данные base64. Это отдельный, очень специфический вопрос, который, вероятно, уже был рассмотрен в другом месте в Stack Overflow. –

Смежные вопросы