ASP MVC - byte[] 到图像

ASP MVC - byte[] to Image

我的 ASP MVC 站点有问题。我正在尝试将 byte[] 转换为 cshtml 文件中的图像 "on the fly"。这是代码示例:

<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>

它在 FromStream() 转换期间抛出错误(据我记得 InvalidOperation)或仅显示小占位符而不是图像(如卸载图像)。

有人知道将 byte[] 转换为有效的 cshtml 图像的技巧吗?

使用以下假设

  • item.Photo1 是 byte[]
  • item 有一个 mime 属性,它包含照片的 mime 类型,如 image/pngimage/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}

这样的格式