Не понимаешь как работать с imgproxy в своих python-проектах? Или понимаешь, но хочешь начать делать это удобно и элегантно? Бери imgproxykit

Наш брат Александр Кондратьев (могли видеть его на подкасте) сделал свой первый личный опенсурс проект - imgproxykit - библиотека для сборки URL к imgproxy

👉 https://github.com/kondratevdev/imgproxykit

Если не сталкивались с imgproxy: это сервер на Go (перспективный востребованный ЯР) для обработки изображений. Формируешь для него ссылку  с набором параметров обработки и оригиналом - получаешь картинку нужно размера, качества и формата.

imgproxykit позволяет описать параметры python-кодом:

from imgproxykit import Client, Transform from imgproxykit.options import Gravity, Resize

# Адрес imgproxy сервера client = Client('https://imgproxy.example.com')

thumbnail = Transform(     # Составные параметры - объектами опций     Resize(width=300, height=300, mode='fill'),     Gravity(position='sm'),     # Простые через kwargs или такими же объектами     quality=80,  # То же самое, что Quality(80)     format='webp',  # То же самое, что Format('webp') )

# Собираем ссылку 300×300 в WebP url = client.url(     source='https://example.com/cat.jpg',     transform=thumbnail, )

А если одна картинка нужна в нескольких размерах, есть variants.

# Общий трансформ для всех вариантов base = Transform(quality=85, format='webp')

products = {     'small': Transform(*base.options, width=320),     'medium': Transform(*base.options, width=640),     'large': Transform(*base.options, width=1280), }

# По одной ссылке на каждый вариант urls = client.variants(     source='https://example.com/backpack.jpg',     variants=products, )

small_url = urls['small'] large_url = urls['large']

Что ещё есть: • Подпись ссылок • Поддержка пресетов, настроенных на стороне imgproxy • Интеграция с Django • Интеграция с FastAPI

Планируется: • Поддержать DRF, Litestar • srcset • Валидация параметров опций

Библиотека полностью типизирована: mypy, pyright, ty, pyrefly в strict моде

Буду рад, если дадите Саше фидбек по API. А еще обязательно ставим звёздочки, кидаем багрепорты и становимся контрибуторами (PR, в отличие от Litestar пока открыты 🌚)!