Как изменить размер образа из Azure, учитывая также дисковый кэш?
В настоящее время я пытаюсь создать отчет в формате PDF на своем веб-сайте с кучей изображений. Все эти изображения хранятся в хранилище BLOB-объектов Azure в оригинальном размере.
На всем веб-сайте я использую промежуточное ПО ImageResizer с плагинами Azure и DiskCache, и они отлично работают, однако кажется, что для отчета в формате PDF мне нужно использовать API ImageResizer, который будет принимать только Stream, Bitmap или путь в качестве входных данных.
Моя текущая реализация технически работает (которая загружает большой двоичный объект и обеспечивает поток), но это очень медленно.
Есть ли способ вызвать 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 ответ
Это должно быть что-то вроде /azure/path/to/document.pdf?format=png&page=1
Для HTTP API поддерживается кэширование на диске PDF-файлов, предоставляемых Azure, что лучше всего подходит для этой ситуации.