我想通过Web API调用返回图像。我想要做的是获取图像,调整图像大小,然后返回它。这是我的代码......
public Image GetImage(string url)
{
WebClient wc = new WebClient();
byte[] data = wc.DownloadData(url);
MemoryStream memstream = new MemoryStream(data);
Image img = Image.FromStream(memstream);
img = resize(img, new System.Drawing.Size(100, 100));
return img;
}
protected static System.Drawing.Image resize(System.Drawing.Image imgToResize, System.Drawing.Size size)
{
return (System.Drawing.Image)(new System.Drawing.Bitmap(imgToResize, size));
}
然后理想情况下,我希望能够通过HTML ...
做这样的事情<img src="http://localhost:23520/Image/GetImage?url=whatever" />
这显然不起作用。有没有办法让这个图像标签显示RESTful服务返回的图像?
答案 0 :(得分:3)
它必须是api电话吗?
我强烈建议您使用通用处理程序。
以下是一个小教程:http://www.dotnetperls.com/ashx
您可以读取图像,将其保存到内存中,调整大小,然后直接输出图像。
如果你确实去了处理程序路径,那么这就是你需要的代码
WebClient wc = new WebClient();
byte[] data = wc.DownloadData(context.Request.QueryString.Get("url"));
MemoryStream memstream = new MemoryStream(data);
Image img = Image.FromStream(memstream);
img = resize(img, new System.Drawing.Size(100, 100));
context.Response.Clear();
context.Response.ClearHeaders();
img.Save(context.Response.OutputStream, ImageFormat.Jpeg);
context.Response.ContentType = "image/jpeg";
HttpContext.Current.ApplicationInstance.CompleteRequest();
图片标记将是
的内容 <img src="http://localhost:23520/Image/GetImage.ashx?url=whatever" />
答案 1 :(得分:2)
如果您的网络服务是WCF网络服务,您可以查看以下链接:
http://msdn.microsoft.com/en-us/library/cc681221(v=vs.110).aspx
答案 2 :(得分:1)
我建议您以base64格式发送图片
并将其设置为图像
<img src="data:image/gif;base64,<YOUR DATA>" alt="Base64 encoded image" />
您可以使用
指向base64的URLpublic String ConvertImageURLToBase64(String url)
{
StringBuilder _sb = new StringBuilder();
Byte[] _byte = this.GetImage(url);
_sb.Append(Convert.ToBase64String(_byte, 0, _byte.Length));
return _sb.ToString();
}