如何在ASP.NET页面上动态显示字节图像?

4
我已经从 Web 服务加载了一个字节数组图像到我的 ASP.NET 网站。我需要在执行 Web 服务后立即在网页上显示它。
我尝试使用通用处理程序,但是由于无法将字节数组图片传递到通用处理程序中,因此我无法完成它。
void Button2_Click1(object sender, EventArgs e)
{

    this.verifyTemplates();
    byte[] userImg;
    try
    {

        matchTemp.templateService hs = new matchTemp.templateService();
        bool s1 = hs.matchTemplates(template, out userID, out userName, out userImg);
// userImg is the byte image i need to display

    }
    catch(Exception exc)
    {
     //   vLabel.Text = exc.Message;
    }
}

1
图像数据从哪里来?“通用处理程序”代码在哪里?您在单击事件处理程序中要做什么? - Oded
1
请阅读 - 撰写完美问题 - Oded
忘记通用处理程序部分吧。button2是一个asp按钮,在单击事件中,我执行了一个名为matchTemplates的Web服务,它会返回一些输出参数,最后一个输出参数是一个byte []类型的图像。我需要在页面上显示这个图像。 - Tharik Kanaka
没有控件可以实现这个功能。你需要使用一个image控件,并将其源指向一个返回动态图片的HttpHandler。在SO上有很多关于如何实现这一点的问题和答案。 - Oded
1个回答

4
你需要的是数据URL。你可以像这样获取字节数组的base64(根据需要更改图像类型)。
string imageBase64 = Convert.ToBase64String(userImg);
string imageSrc = string.Format("data:image/gif;base64,{0}", imageBase64);

在视图中:
<img src='"<%=imageSrc%>"' />

如果您需要支持IE 7或更早版本,则此方法无法使用,您需要查看MHTML


1
由于转换为Base64会使编码后的值增加约30%,因此这可能不是一个选项。 - Oded

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