https://github.com/thumbor/thumbor
бесплатный open-source сервис для динамической обработки изображений на лету, созданный компанией globo.com. Он работает как HTTP-сервер, который генерирует нужный формат картинки в зависимости от параметров в URL.
- Умное кадрирование: Сервис использует AI технологии для распознавания лиц и ключевых точек на фото, чтобы при изменении размера важные части кадра не обрезались.
- Поддержка форматов: Из коробки работает со всеми популярными форматами изображений.
- Масштабирование и фильтры: Позволяет легко изменять размер, обрезать, сжимать и накладывать различные фильтры на графические файлы.
- Скорость и интеграция: Высокая производительность достигается за счет гибких систем кэширования. Поддерживает различные типы хранилищ (локальное, AWS S3, Ceph и др.).
- Проект написан на Python и пользуется огромной популярностью: он имеет более 10.5 тысяч звезд на GitHub и используется такими крупными компаниями, как Wikipedia, Forbes, Square и Vox Media.
Заинтересовало что там за AI распознавание - https://thumbor.readthedocs.io/en/latest/detection_algorithms.html
Вообще, предпочитаю генерировать все нужные размеры изображений заранее. Если это условный каталог товаров - там достаточно предсказуемые размеры хранилища и превьюхи весят мало (не забываем про всякие оптимизации размеров изображений).
Но если картинок много, а эти самые превью не нужны навсегда (соц. сеть пишешь, например) - вполне себе рабочее решение получается на лету их создавать и хранить ограниченный период.