Вывод байтового массива в атрибут src тега img

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

Ответ 1

Может быть идея встроенных изображений с данными 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 до 32kb).

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

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

Ответ 2

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

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