我目前正在尝试在我的网站上生成包含一堆图像的 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