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