从Byte[]加载图像Src Asp.Net MVC 3

4
我有一个ASP.net MVC 3应用程序,我想将图像作为字节存储在模型中,然后从模型加载它并将其放入HTML图像标签的src属性中。例如:
//Property in Model
 public byte[] Image { get; set; }

但是当我尝试这样做时出现错误:
<img src = "@Model.Image" alt=""/>

如何从字节加载图像? 我想避免再次调用控制器以获取文件结果中的图像。
这是可能的吗?
2个回答

8
最简单的方法就是这样子:
<img src="data:image/png;base64,@System.Convert.ToBase64String(Model.Image)" alt=""/>

这需要一个PNG有效负载,并且在旧浏览器中的支持不是很好。

我实际上建议将其保存到磁盘,并让您的Web服务器单独托管它。


2
这也适用于没有png图像类型的情况。<img src="data:image;base64,@System.Convert.ToBase64String(Model.Image)" alt=""/> - user1513030

2
您可以将图像直接嵌入为base64编码的字符串。
示例:
<img src="data:image/gif;base64,R0lGODlhEAAOALMAAOazToeHh0tLS/7LZv/0jvb29t/f3//Ub/
/ge8WSLf/rhf/3kdbW1mxsbP//mf///yH5BAAAAAAALAAAAAAQAA4AAARe8L1Ekyky67QZ1hLnjM5UUde0ECwLJoExKcpp
V0aCcGCmTIHEIUEqjgaORCMxIC6e0CcguWw6aFjsVMkkIr7g77ZKPJjPZqIyd7sJAgVGoEGv2xsBxqNgYPj/gAwXEQA7" 
width="16" height="14" alt="embedded folder icon">

在Internet Explorer 8中,数据大小限制为32 KiB。此外,base64会导致33%的开销。

更多信息:http://en.wikipedia.org/wiki/Data_URI_scheme


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接