如何在不使用处理器的情况下将MemoryStream绑定到图像控件

本文关键字:MemoryStream 绑定 控件 图像 情况下 处理器 | 更新日期: 2023-09-27 18:13:25

我从数据库中检索图像,并希望在控件中显示。

代码:

MemoryStream str= new MemoryStream();
byte[] n = (byte[])db.imagefile;
str.Write(n, 0, db.imagefile.Length);

如何将MemoryStream绑定到图像控件,而不使用处理程序?

如何在不使用处理器的情况下将MemoryStream绑定到图像控件

您已经有来自数据库的字节数组,所以您只需要将字节数组转换为Base64编码字符串。

然后将Base64编码字符串赋值给asp:Image control的ImageUrl

public class Database
{
    public byte[] Imagefile { get; set; }
    public Database()
    {
        // PNG Red dot
        Imagefile = new byte[]
        {
            137,80,78,71,13,10,26,10,0,0,0,13,73,72,
            68,82,0,0,0,10,0,0,0,10,8,6,0,0,0,141,50,
            207,189,0,0,0,4,103,65,77,65,0,0,177,143,
            11,252,97,5,0,0,0,9,112,72,89,115,0,0,11,
            19,0,0,11,19,1,0,154,156,24,0,0,0,7,116,
            73,77,69,7,214,6,1,23,57,40,29,23,87,226,0,
            0,0,29,116,69,88,116,67,111,109,109,101,110,
            116,0,67,114,101,97,116,101,100,32,119,105,
            116,104,32,84,104,101,32,71,73,77,80,239,100,
            37,110,0,0,0,93,73,68,65,84,24,211,189,204,
            189,13,130,80,0,196,241,31,116,180,236,224,
            22,76,224,50,14,224,46,206,193,8,54,38,132,
            61,44,77,94,197,217,88,188,16,94,103,184,234,114,
            31,127,254,173,110,31,132,203,207,14,29,235,
            225,43,92,195,28,94,225,214,196,135,119,40,
            225,19,158,117,215,87,163,9,165,202,182,48,
            182,136,247,176,132,71,115,116,190,190,12,
            146,26,23,123,74,217,138,0,0,0,0,73,69,78,
            68,174,66,6,130
        };
    }
}
protected void Page_Load(object sender, EventArgs e)
{
    var db = new Database();
    Image1.ImageUrl = string.Concat("data:image/png;base64,",
        Convert.ToBase64String(db.Imagefile));
}

Web浏览器支持

截至2012年3月,以下web浏览器支持数据uri:

  • 基于壁虎的,如Firefox, SeaMonkey, XeroBank, Camino, Fennec和K-Meleon
  • Konqueror,通过KDE的KIO奴隶输入/输出系统
  • Opera(包括设备如任天堂DSi或Wii)基于WebKit的,如Safari(包括iOS), Android的浏览器,Kindle 4的浏览器,Epiphany和Midori (WebKit是Konqueror的KHTML引擎的衍生产品,但Mac OS X不共享KIO架构,所以实现是不同的),以及基于WebKit/Chrome的,如Chrome
  • 三叉戟

    • Internet Explorer 8:出于安全原因,微软限制了对某些"不可导航"内容的支持,包括担心嵌入在数据URI中的JavaScript可能无法被脚本过滤器(如基于web的电子邮件客户端所使用的脚本过滤器)解释。在版本8中,数据uri必须小于32 KB。[3]数据uri仅支持以下元素和/或属性:

      • 对象(仅限图像)
      • img
      • <
      • 输入类型=图像/gh>链接
      • 接受URL的CSS声明,如background-image、background、list-style-type、list-style等。
    • Internet Explorer 9: Internet Explorer 9没有32KB的限制,支持更多的元素

http://en.wikipedia.org/wiki/Data_URI_scheme Web_browser_support