我想让ImageResizer调整WebAPI提供的图片大小。我在文档中安装了ImageResizer。 /resizer.debug.ashx没有显示任何问题。当我尝试调整静态图像的大小时,它工作正常。
我尝试使用这些参数调整大小:
/api/files/image/image.jpg?width=100
/api/files/image/image.jpg?width=100&process=always
/api/files/image/image.jpg?width=100&format=jpg
我的WebAPI操作如下所示:
[HttpGet]
public HttpResponseMessage Image(string name)
{
var filePath = GetFilePath();
var response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content = new StreamContent(new FileStream(filePath, FileMode.Open, FileAccess.Read));
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("inline");
response.Content.Headers.ContentDisposition.FileName = fileData.OriginalFileName;
response.Content.Headers.ContentLength = fileData.ContentLength;
response.Content.Headers.ContentType = new MediaTypeHeaderValue(fileData.MediaType);
return response;
}
有没有办法将ImageResizer与WebAPI一起使用?
答案 0 :(得分:2)
WebAPI,MVC和HTTPHandlers都有一个共同点 - 可怕的文件服务性能。根据设计,应用程序框架不适用于大文件处理。
此外,由于ASP.NET和IIS管道限制,在ExecuteRequest阶段由HttpHandler / MVC / WebAPI生成文件时,无法有效地缓存和提供图像。
请阅读ImageResizer Best Practices Guide了解详情。
如果您需要提供源图像,可以实现IVirtualImageProvider或使用其中一个提供的插件来访问您选择的数据存储。