asp.net显示来自字节数组的图像

时间:2016-09-05 22:28:08

标签: c# asp.net image linq

我有一个字节数组并尝试显示该图像。

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.Linq;

namespace RealPortableTerminal
{
public partial class resim : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        PortableTerminalDbEntities entity = new PortableTerminalDbEntities();
        byte[] arr = (from b in entity.Sicil where b.Id == 31 select b.Fotograf).First();

        Image rImage = null;
        using (MemoryStream ms = new MemoryStream(arr))
        {
            rImage = Image.FromStream(ms);
        }
    }
}
}

它强调了FromStream,并说“System.Web.UI.WebControls.Image'不包含' FromStream'的定义。似乎添加System.Data.Linq引用没有改变任何东西。我错过了什么吗?顺便说一下,我很确定我正确地从数据库中获取字节数组。

3 个答案:

答案 0 :(得分:18)

另一种方法是将您的字节数组转换为基数为64的字符串,并将其分配给ImageUrl的{​​{1}}属性,如下所示:

rImage

您不需要中间rImage.ImageUrl = "data:image;base64," + Convert.ToBase64String(arr); 或单独的页面...如果字节数组是浏览器支持的图像格式,则会显示。祝你好运。

答案 1 :(得分:6)

<img id="img" runat="server" alt=""/>

在代码背后

string base64String = Convert.ToBase64String(arr, 0, arr.Length);
img.Src = "data:image/jpg;base64," + base64String;

您不需要MemoryStream

答案 2 :(得分:1)

你可能会想到System.Drawing.Image;该班级支持FromStream

This forum post向您展示了在WebForms中加载动态图像的几种方法。

最简单的方法可能是创建一个单独的aspx页面,当你在这里加载你的图像并使用Response.BinaryWrite将它保存到响应流中,然后在你的页面中。重新开始,创建一个Image控件,它使用新的aspx页面作为其图像URL。如果需要加载各种图像,当然可以使用查询字符串参数。