【问题标题】:How to Display byte image on the asp.net page dynamically?如何在asp.net页面上动态显示字节图像?
【发布时间】:2012-03-23 11:32:48
【问题描述】:

我已将一个字节数组图像从 Web 服务加载到我的 asp.net 网站。 我需要在执行网络服务后立即将其显示在网页上。

我尝试过使用通用处理程序,但由于无法将 byte[] 图像传递给通用处理程序,所以我无法做到这一点

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;
    }
}

【问题讨论】:

  • 图片数据从何而来? “通用处理程序”代码在哪里?你到底想在点击事件处理程序中做什么?
  • 忘记通用处理程序部分 button2 是一个 asp 按钮,在单击事件时,我执行了一个名为 matchTemplates 的 Web 服务,它给出的输出参数很少,最后输出参数是一个字节 [] 图像。我需要在页面上显示该图像
  • 没有允许这样做的控件。您需要使用image 控件并将其源指向返回动态图像的HttpHandler。 SO上有很多问题和答案描述了如何实现这一目标。

标签: asp.net image


【解决方案1】:

您要查找的是Data URL。你可以像这样得到一个字节数组的base64(根据需要改变图像类型)

string imageBase64 = Convert.ToBase64String(userImg);
string imageSrc = string.Format("data:image/gif;base64,{0}", imageBase64);

在视图中:

<img src='"<%=imageSrc%>"' />

这在 IE 7 或更早版本中不起作用,如果您需要支持这些,那么您需要查看 MHTML

【讨论】:

  • 看到转换为 Base64 会使编码值的大小增加大约 30%,这可能不是一个选项。
猜你喜欢
  • 1970-01-01
  • 2011-03-26
  • 2014-07-18
  • 2014-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-10
  • 1970-01-01
相关资源
最近更新 更多