2

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

4

1 回答 1

2

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

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

$("#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

于 2012-10-03T21:02:22.653 回答