我想通过网络 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 服务返回的图像?
请您参考如下方法:
一定要调用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" />
