asp.net - 如何在 ASP.NET ASMX Web 服务中生成图像并通过 AJAX 加载它?

标签 asp.net jquery

我当前正在使用 ASP.Net ASMX Web 服务内的函数来生成 System.Drawing.Image。我希望将此图像(转换为 png 或其他格式后)传递到浏览器作为对 AJAX 调用的回复。 (使用 jQuery 的 $.ajax)。我一直在谷歌搜索,但似乎无法找到方法,尽管我很确定这是可能的。我是否首先将其转换为数据 URI,还是什么?

最佳答案

我认为你做不到。为了返回图像,你应该有一个返回 bytearray 的方法,我认为它在 javascript 中没有任何用处。
我的解决方法是将图像保存在某个位置并将图像的地址返回给客户端。

更新:根据评论,您可以将图像数据编码为 Base64 字符串,并在 ajax 回调中处理 DATA URI。
您可以使用 JSON 来表示 base64Encoded 数据,并且在 ajax calklback 上,您可以编写如下内容:

$("#myImage").attr("src", "data:image/png;base64,RETURNED_DATA_FROM_ASMX");    

以下是在 C# 中将图像转换为 Base64 的示例代码:

public string ImageToBase64(Image image, 
  System.Drawing.Imaging.ImageFormat format)
{
  using (MemoryStream ms = new MemoryStream())
  {
    // Convert Image to byte[]
    image.Save(ms, format);
    byte[] imageBytes = ms.ToArray();

    // Convert byte[] to Base64 String
    string base64String = Convert.ToBase64String(imageBytes);
    return base64String;
  }
}

要了解如何格式化 DATA URI,您可以访问 http://en.wikipedia.org/wiki/Data_URI_scheme#Format .

关于asp.net - 如何在 ASP.NET ASMX Web 服务中生成图像并通过 AJAX 加载它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12716750/

相关文章:

javascript - scrollToElement 没有用户交互

ASP.NET 图表 : ToolTips on X and Y axis labels?

c# - 动态创建具有多个筛选字段的新字段搜索组

jquery - 是否可以在服务工厂()中返回$http.get().success()中的数据?

如果 td 没有文本,jquery 隐藏表格行

javascript - jquery 显示更多行但不是全部

asp.net - 在 Asp :Chart 中将不重复设置为背景图像

c# - 当我在 gridview 中过滤行没有找到记录时如何禁用导出按钮

c# - 有什么方法可以在 C# 中跟踪 IQueryable 的执行吗?

javascript - 非 HTML5 JavaScript RGB 颜色选择器如何工作?