imagor — HTTP-сервер на Go поверх
libvips для трансформации изображений на лету. Параметры передаются прямо в URL — никакого кода писать не нужно. Поддерживает загрузку из HTTP, S3, GCS и файловой системы, кэширует обработанные результаты в Result Storage.Параметры трансформации передаются прямо в URL. Поддерживает загрузку из HTTP, S3, GCS и файловой системы, кэширует обработанные результаты.
Как запустить
docker run -p 8000:8000 shumc/imagor -imagor-unsafe -imagor-auto-webp
Запрос выглядит так:
http://localhost:8000/unsafe/fit-in/200x200/filters:fill(white)/https://example.com/photo.jpg
Примеры фильтров
Ресайз с умной обрезкой и конвертацией:
/unsafe/200x200/smart/filters:format(jpeg):quality(80)/photo.png
Вотермарк по всей нижней части:
/unsafe/fit-in/200x150/filters:fill(yellow):watermark(logo.png,repeat,bottom,0,40,40)/photo.gif
Основные фильтры:
blur, format, quality, fill, watermark, grayscale, rotate, strip_metadata, label. Применяются пайплайном через двоеточие.Безопасность
В продакшне отключаем
IMAGOR_UNSAFE и подписываем URL через IMAGOR_SECRET. Подпись на HMAC-SHA1 (или SHA256/SHA512), хэш в base64url добавляется в начало пути. Дополнительно ограничиваем источники и размеры входящих изображений:HTTP_LOADER_ALLOWED_SOURCES=*.example.com
VIPS_MAX_RESOLUTION=16800000
VIPS_MAX_WIDTH=5000
➡️ Репозиторий
📍 Навигация: Вакансии • Задачи • Собесы • Канал в Max
🐸 Библиотека Go-разработчика
#GoToProduction