C# .NET MVC 4:显示来自图像对象的图像

C# .NET MVC 4:显示来自图像对象的图像,c#,.net,asp.net-mvc,image,asp.net-mvc-4,C#,.net,Asp.net Mvc,Image,Asp.net Mvc 4,我有一个.NETMVC4应用程序,它将图像存储在数据库中。我正在检索如下图像: byte[] imageBytes = dbObject.dbImage; MemoryStream ms = new MemoryStream(imageBytes); System.Drawing.Image image = System.Drawing.Image.FromStream(ms); 现在我得到了图像,我只想在MVC视图中显示它。我不知道如何在不保存本地图像的情况下执行此操作,这似乎很疯狂。我读过

我有一个.NETMVC4应用程序,它将图像存储在数据库中。我正在检索如下图像:

byte[] imageBytes = dbObject.dbImage;
MemoryStream ms = new MemoryStream(imageBytes);
System.Drawing.Image image = System.Drawing.Image.FromStream(ms);
现在我得到了图像,我只想在MVC视图中显示它。我不知道如何在不保存本地图像的情况下执行此操作,这似乎很疯狂。我读过关于创建处理程序的其他建议,但对于这样一个简单的任务来说,这似乎有些过分了


如何在视图中显示此图像?

您可以将字节转换为Base64并将其嵌入


请注意,这在IE<8中不起作用。

您可以创建一个返回图像的操作,例如

控制器

看法

你可以简单地使用

控制器

看法


确实激起了我的兴趣!在wikipedia页面中,它提到每次重新下载包含文档的编码数据时都会下载。这是否意味着没有缓存,或者只是图像本身没有单独缓存?这种行为是web服务器特有的吗?@RGraham:data:uri是包含它们的文档的一部分,就像其他内容或URL一样。它们与文档的其余部分遵循相同的缓存策略。但是,文档通常不如图像可缓存。这完全取决于您的服务器端缓存配置。你肯定不需要它,但你得到了我的+1:哇,这太棒了。谢谢执行此操作时,我的图像未显示。事实上,GetImage似乎甚至没有被调用,也就是说,我在其中放置了一个断点,但从未到达。@JamesHarpe:浏览器会将其作为单独的HTTP请求调用。执行此操作时,我的图像不会显示。在Images方法中放置一个中断符表明该方法从未被调用。
public ActionResult GetImage(int imageId) {
  byte[] imageBytes = dbObject.dbImage;
  MemoryStream ms = new MemoryStream(imageBytes);
  return File(ms, "image/png", "myimage.png");
}
<img src="@Url.Action("GetImage", "MyController", new { imageId = 1 })" alt="MyImage" />
public ActionResult Images() {
    byte[] imageBytes = dbObject.dbImage;
    return File(imageBytes, "image/png");
}
<img src="@Url.Action("Images", "Controller")"  />