如何在考虑磁盘缓存的同时调整 Azure 图像的大小?

How do I resize an image from Azure while also considering the disk-cache?

我目前正在尝试在我的网站上生成包含大量图像的 PDF 报告。所有这些图像都以其原始大小存储在 Azure blob 存储中。

在整个网站上,我都在使用带有 Azure 和 DiskCache 插件的 ImageResizer 中间件,它们工作得很好,但是对于 PDF 报告,我似乎必须使用 ImageResizer API,它只接受一个流、位图或路径作为输入。

我当前的实现在技术上可行(下载 blob 并提供流),但速度非常慢。

有没有办法在使用磁盘缓存的同时调用 API?我尝试提供 /azure/someblob.jpg 之类的路径,但它不起作用。

编辑:根据 Natahniel 的建议,我提出了这个解决方案(用于 iTextSharp):

private Image GetImageResized(string path) {

    var request = HttpContext.Current.Request.Url;
    var uri = new Uri(request.Scheme + "://" + request.Authority + "/" + path, UriKind.Absolute);

    Stream dest = null;

    using (var client = new WebClient()) {

        dest = new MemoryStream(client.DownloadData(uri));

    }

    return iTextSharp.text.Image.GetInstance(dest);

}

本例中的路径类似于 azure/mycontainer/someblob.jpg?height=500

应该是 /azure/path/to/document.pdf?format=png&page=1

HTTP API 支持 Azure-provided PDF blob 的磁盘缓存,这最适合这种情况。