Как изменить размер образа из 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, что лучше всего подходит для этой ситуации.

Другие вопросы по тегам