Как отобразить картинку из byte[] во вьюшке в img

131
16 ноября 2020, 19:30

Как отображать картинки(массив байтов) в вьюшке(<img>)?

Допустим есть контроллер, в нем я получаю из базы данных массив байтов-картинку. Как я могу отобразить эти картинки во вьюшке. Буду рад услышать все возможные варианты

Answer 1

Вариант Виталия рабочий, но я предлагаю не морочиться с кодированием в 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% выше, чем если передавать последовательность байт. Насколько это критично с вашим объёмом картиночного трафика — решайте сами.

Ссылки по теме:

  • Отправка файлов в ASP.NET MVC 5
  • Return jpeg image from Asp.Net Core WebAPI
Answer 2
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">  
READ ALSO
В чём проблемы с функцией SalesTax

В чём проблемы с функцией SalesTax

Начал читать C# 7 иNET Core

133
Wpf и горячие клавишы

Wpf и горячие клавишы

Да, я знаю как использовать хоткеи (XAML):

131
свайп в окне эмулятора Android через winapi

свайп в окне эмулятора Android через winapi

Имею эмулятор BlueStacksЦель: написать простого бота, который в окне эмулятора нажимает на определенные области экрана эмулируя тапы, а также...

128
Проблема при работе БД с IIS

Проблема при работе БД с IIS

Опубликовал свой проект в IISПри работе с БД выдаёт следующую ошибку: "Не удается открыть базу данных "RefsDB", запрашиваемую именем входа

134