Как отображать картинки(массив байтов) в вьюшке(<img>
)?
Допустим есть контроллер, в нем я получаю из базы данных массив байтов-картинку. Как я могу отобразить эти картинки во вьюшке. Буду рад услышать все возможные варианты
Вариант Виталия рабочий, но я предлагаю не морочиться с кодированием в base64 - а сразу отдавать картинку:
[HttpGet]
public async Task<IActionResult> Get()
{
var image = System.IO.File.OpenRead("C:\\images\\myImage.jpeg"); // Или из базы, но я предпочитаю не грузить в БД картинки
return File(image, "image/jpeg");
}
И использовать этот url в качестве обычно src у картинки — используя Url.Action или какая там у вас версия mvc.
<img src='@Url.Action(actionaname","controller")'>
В реальности, это будет конечно action с параметром id картинки или её имени.
Разницы в подходах особо нет, ну разве что в base64 трафик будет на ~ 30% выше, чем если передавать последовательность байт. Насколько это критично с вашим объёмом картиночного трафика — решайте сами.
Ссылки по теме:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace DemoProject.Controllers
{
public class DemoController : Controller
{
// GET: Demo/GetImageFromByteArray
public ActionResult GetImageFromByteArray()
{
// Конвертируем
string imreBase64Data = Convert.ToBase64String(byteData);
string imgDataURL = string.Format("data:image/png;base64,{0}", imreBase64Data);
//Передаем во вью
ViewBag.ImageData = imgDataURL;
return View();
}
}
}
@{
ViewBag.Title = "Asp.Net MVC Display image from byte array";
}
<h2>Asp.Net MVC Display image from byte array</h2>
<img src="@ViewBag.ImageData">
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Имею эмулятор BlueStacksЦель: написать простого бота, который в окне эмулятора нажимает на определенные области экрана эмулируя тапы, а также...
Опубликовал свой проект в IISПри работе с БД выдаёт следующую ошибку: "Не удается открыть базу данных "RefsDB", запрашиваемую именем входа