我有一个字节数组格式的图像列表。我想在页面上显示这些图像。此代码有效:
List<string> photoData = new List<string>();
foreach (var photoBytes in PhotoByteArrayList)
{
var imageBase64Data = Convert.ToBase64String(photoBytes);
var imageUrl = "data:image/JPEG;base64," + imageBase64Data;
photoData.Add(imageUrl);
}
return View(photos);
我的观点如下:
@model List<string>
@{
ViewBag.Title = "Index";
}
<h2>All Images</h2>
@foreach (var item in @Model)
{
<img src="@item" />
}
这很有效。但是:此解决方案意味着页面的HTML包含巨大的图像数据串。这会导致整个页面需要很长时间才能加载。我宁愿做的是:
我将如何做到这一点?
答案 0 :(得分:1)
您可以创建一个返回图像的动作方法。使用File
方法返回图像。
public ActionResult MyImg(int id)
{
byte[] bytes =GetByteArrayOfYourImageFromSomeWhere(id);
return File(bytes, "image/jpg");
}
Assumin GetByteArrayOfYourImageFromSomeWhere()
方法接受与您的图片相关的唯一ID,并返回存储在表格中的图像的字节数组版本。
在您的视图中,您可以将此操作方法称为图像源
<img src="@Url.Action("MyImg","YourControllerName",new { id=250 })" alt="hi" />
将250
替换为与您的图片相关的有效唯一数字ID。