Вывод байтового массива в атрибут src тега img - PullRequest
11 голосов
/ 15 апреля 2010

Я использую ASP.NET MVC и у меня есть модель с изображением (байтовый массив) в одном из полей. Я пытаюсь вывести это изображение в атрибут src тега img. Я хочу сделать что-то вроде <img src='<%= Model.VenueImage %>'>. Как я могу это сделать?

Ответы [ 2 ]

19 голосов
/ 15 апреля 2010

Может быть Встроенные изображения с URL-адресами данных идея?

Встроенные изображения используют схему URI данных вставлять изображения непосредственно в сеть страницы. В соответствии с RFC 2397, данные URI предназначены для встраивания небольших данных элементы как «непосредственные» данные, как будто они были ссылки извне. С помощью встроенные изображения сохраняют HTTP-запросы внешние ссылки на объекты.

System.Drawing.Image image = GetImageFromSomewhere(...);

byte[] imageData = ImageToByteArray(image);
string imageBase64 = Convert.ToBase64String(imageData);
string imageSrc = string.Format("data:image/gif;base64,{0}", imageBase64);

и затем где-то на странице:

<img src= "<%= ImageSrcBytes %>" />

AFAIK это будет работать для Opera 7.2+, Firefox, Safari, Netscape, Mozilla и IE8 + (IE8 до 32 КБ).

Для более ранней версии IE есть обходной путь - MHTML .

Пример того, как это сделать, здесь .

0 голосов
/ 15 апреля 2010

Браузер использует атрибут src, чтобы выдать отдельный запрос на сервер, чтобы получить содержимое изображения. Он не отображает байты в src как само изображение.

Так что вам нужно будет запомнить эти байты (сеанс?) И использовать обработчик (URL-адрес, который вы указали в атрибуте src), чтобы позволить браузеру запрашивать их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...