ASP MVC - byte []到Image

时间:2016-05-23 16:54:03

标签: asp.net-mvc image bytearray

我的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图片的技巧吗?

1 个答案:

答案 0 :(得分:1)

使用以下假设

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

等格式