111,048
社区成员
发帖
与我相关
我的任务
分享
[CrossSite]
[HttpGet]
public HttpResponseMessage GetIco(string icoPath)
{
MemoryStream stream = ImgHelper.GetImgStreamFromNet(icoPath);
var resp = new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new StreamContent(stream)
};
resp.Content.Headers.ContentType = new MediaTypeHeaderValue("image/jpg");
return resp;
}
public static MemoryStream GetImgStreamFromNet(string ImgUrl)
{
Image img = GetImageFromNet(ImgUrl,
(request) =>
{//此处可以对request进行相关设定,因为此部分均为基类,所以也可以用于FtpWebRequest之类
request.Timeout = 2000;
});
return ConvertImgToStream(img);
}
public static MemoryStream ConvertImgToStream(Image img)
{
BinaryFormatter binFormatter = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
binFormatter.Serialize(ms, img);
return ms;
}
/// <summary>
/// 通过NET获取网络图片
/// </summary>
/// <param name="url">要访问的图片所在网址</param>
/// <param name="requestAction">对于WebRequest需要进行的一些处理,比如代理、密码之类</param>
/// <param name="responseFunc">如何从WebResponse中获取到图片</param>
/// <returns></returns>
public static Image GetImageFromNet(this Uri url, Action<WebRequest> requestAction = null, Func<WebResponse, Image> responseFunc = null)
{
Image img;
try
{
WebRequest request = WebRequest.Create(url);
if (requestAction != null)
{
requestAction(request);
}
using (WebResponse response = request.GetResponse())
{
if (responseFunc != null)
{
img = responseFunc(response);
}
else
{
img = Image.FromStream(response.GetResponseStream());
}
}
}
catch
{
img = null;
}
return img;
}
[Route("transfer")]
[HttpGet]
public async Task<HttpResponseMessage> TransferAsync(string url)
{
HttpClient httpClient = new HttpClient();
return await httpClient.GetAsync(url);
}