我的ASP MVC网站存在问题。我试图将byte[]
转换为图像"在飞行中"在cshtml文件中。这是代码示例:
<div class="col-md-6 portfolio-item">
<table>
@foreach (var item in new Projek2.Models.DatabaseEntities().Photos)
{
<tr>
<td>
@using (var ms = new MemoryStream(item.Photo1))
{
<img src=@System.Drawing.Image.FromStream(ms)/>
}
</td>
<td>
@Html.DisplayFor(modelItem => item.FileName)
</td>
</tr>
}
</table>
</div>
在InvalidOperation
转换过程中抛出错误(FromStream()
据我所知)或仅显示小占位符而非图片(如卸载的图片)。
有人知道将byte[]
转换为有效的cshtml图片的技巧吗?
答案 0 :(得分:1)
使用以下假设
item.Photo1
是byte [] item
有一个mime属性,其中包含照片的mime类型,如image/png
或image/jpeg
等。否则,您可以从文件名派生mime类型,假设该名称包含文件扩展名。 您可以创建Data URI scheme并将其嵌入图像的来源(src)。
<div class="col-md-6 portfolio-item">
<table>
@foreach (var item in new Projek2.Models.DatabaseEntities().Photos)
{
<tr>
<td>
<img src="@System.String.Format("data:{0};base64,{1}",item.Mime,Convert.ToBase64String(item.Photo1))"/>
</td>
<td>
@Html.DisplayFor(modelItem => item.FileName)
</td>
</tr>
}
</table>
</div>
请注意,根据我的假设,如果项目不存储图像类型,那么您可以创建一个帮助方法,从图像文件名中派生类型,因为它包含图像的文件扩展名。使用image\{file extension}