我有一个 ASP.net MVC 3 应用程序,我想将图像作为字节存储在模型中,然后将其从模型加载到 html 图像标记的 src 属性中。
例如
//Property in Model
public byte[] Image { get; set; }
但是当我尝试这个时,它会出错:
<img src = "@Model.Image" alt=""/>
如何从字节加载图像?我想避免再次调用控制器以将图像作为 FileResult 获取。
可能吗?
我有一个 ASP.net MVC 3 应用程序,我想将图像作为字节存储在模型中,然后将其从模型加载到 html 图像标记的 src 属性中。
例如
//Property in Model
public byte[] Image { get; set; }
但是当我尝试这个时,它会出错:
<img src = "@Model.Image" alt=""/>
如何从字节加载图像?我想避免再次调用控制器以将图像作为 FileResult 获取。
可能吗?
最简单的方法是这样的:
<img src="data:image/png;base64,@System.Convert.ToBase64String(Model.Image)" alt=""/>
这假定一个 PNG 有效负载,并且旧版浏览器不太支持。
我实际上建议将其保存到磁盘并让您的 Web 服务器单独托管它。
您可以直接将图像嵌入为 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% 的开销。