Skip to main content
 首页 » 编程设计

c#之通过 RESTful webservice 返回图片

2024年02月13日24luoye11

我想通过网络 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" />