ImageResizer未调整WebAPI提供的图像大小

时间:2014-03-04 07:37:24

标签: c# asp.net-web-api imageresizer

我想让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一起使用?

1 个答案:

答案 0 :(得分:2)

WebAPI,MVC和HTTPHandlers都有一个共同点 - 可怕的文件服务性能。根据设计,应用程序框架不适用于大文件处理。

此外,由于ASP.NET和IIS管道限制,在ExecuteRequest阶段由HttpHandler / MVC / WebAPI生成文件时,无法有效地缓存和提供图像。

请阅读ImageResizer Best Practices Guide了解详情。

如果您需要提供源图像,可以实现IVirtualImageProvider或使用其中一个提供的插件来访问您选择的数据存储。