Эта статья является косвенным наследником JavaScript-lazyload. Возможно, вы захотите сначала прочитать это. Напомним: мы разработали процедуру JavaScript, которая будет загружать изображения в зависимости от размера и положения окон просмотра. Раньше мы предварительно генерировали эти изображения и возвращали определенные разрешения в виде статического контента, теперь мы хотим автоматически масштабировать изображения в соответствии с аргументами URL.

Блок расположения фляги

В этом руководстве мы предполагаем, что URL-адрес мультимедиа будет выглядеть следующим образом:

Во-первых, нам нужен flask-маршрут. Обратите внимание, что если вы используете static местоположение по умолчанию, вы не можете отправлять файлы из-за пределов "static"-каталога.

<path:path> сопоставляет путь после картинки с аргументом path. Кроме того, мы оцениваем URL-аргументы. Функция generateImage будет описана в следующем разделе.

Перекодирование, изменение размера и кэширование

Теперь мы создаем функцию, которая будет генерировать изображение с запрошенными характеристиками из оригинала и сохранять его в пути кэширования, который функция затем вернет.

Мы используем модуль Python pillow (также известный как PIL) для изменения размера и повторного кодирования изображений,в частности, PIL.Image.thumbnail.

Если вы хотите добавить дополнительный заголовок к ответу, вы можете добавить этот дополнительный шаг перед возвратом ответа.

И все, теперь наш picture-route поддерживает масштабирование и кодирование! Как я сказал в начале, вы можете прочитать JavaScript-lazyload, чтобы понять, как развернуть это на вашем веб-сайте.

Не стесняйтесь, присылайте мне письма, чтобы поделиться своими мыслями!