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

时间:2018-03-17 21:16:42

标签: c# asp.net azure imageresizer imageresizer-diskcache

我目前正在尝试使用一堆图片在我的网站上生成PDF报告。所有这些图像都以原始大小存储在Azure blob存储中。

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

我当前的实现在技术上有效(下载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

1 个答案:

答案 0 :(得分:0)

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

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