我当前正在使用 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/