Синтез мощи ImageMagick и удобства веб-интерфейса
Популярная библиотека для обработки изображений ImageMagick, известная своей мощностью и поддержкой сотен форматов, долгое время требовала знания командной строки. Проект Imagemagick-webui от разработчика PrzemekSkw решает эту проблему, предоставляя элегантный веб-интерфейс на базе Next.js 15 и FastAPI. Решение позволяет не только выполнять стандартные операции, но и использовать современные AI-модели для улучшения качества снимков.
Ключевые возможности: от базового редактирования до AI
Интерфейс предлагает широкий спектр инструментов, разделенных на классические фильтры и AI-функции. Особое внимание уделено пакетной обработке и безопасности: все операции запускаются через Redis-очередь, а ввод пользователя строго валидируется через Pydantic-модели для предотвращения инъекций команд.
Основные функции включают:
- AI-удаление фона: интеграция с библиотекой
rembgдля удаления фона в один клик. - Умное увеличение: апскейл изображений в 2x и 4x с использованием алгоритма LANCZOS.
- Авто-улучшение: автоматическая нормализация, повышение насыщенности и резкости.
- Конвертация форматов: поддержка WebP, AVIF, JPEG, PNG, GIF, TIFF и PDF.
Технический стек и архитектура
Проект построен на современных технологиях, обеспечивающих типобезопасность и высокую производительность. Архитектура разделена на фронтенд (Next.js) и бэкенд (FastAPI), с использованием PostgreSQL для хранения истории операций и Redis для управления очередями задач. Приложение полностью готово к деплою через Docker Compose.
| Компонент | Технология/Порт | Назначение |
|---|---|---|
| Frontend | Next.js 15 (Port 3000) | Веб-интерфейс с PWA-поддержкой и темной/светлой темой |
| Backend | FastAPI (Port 8000) | REST API для обработки запросов |
| База данных | PostgreSQL (Port 5432) | Хранение метаданных и истории обработки |
| Очередь задач | Redis (Port 6379) | Асинхронная обработка тяжелых операций (RQ Worker) |
Безопасность и настройка
Разработчик уделил особое внимание безопасности при работе с ImageMagick. В системе реализован белый список команд (Command Whitelist), что исключает возможность выполнения произвольных системных команд. Также установлены лимиты на использование памяти (2GB), время выполнения (300s) и размер дискового пространства. Для продакшена рекомендуется изменять ключи SECRET_KEY и JWT_SECRET в файле docker-compose.yml.
Как запустить проект
Для быстрого старта достаточно клонировать репозиторий и запустить Docker-контейнеры. После инициализации интерфейс будет доступен по адресу http://localhost:3000, а документация API — по адресу http://localhost:8000/docs.
mkdir imagemagick-webgui && cd imagemagick-webgui
curl -O https://raw.githubusercontent.com/PrzemekSkw/imagemagick-webui/main/docker-compose.example.yml
mv docker-compose.example.yml docker-compose.yml
docker compose up -d
Источник: Github ↗
