English: README-EN.md
Локальное приложение для Windows на Python 3 с интерфейсом Tkinter. На стартовом экране выбирается режим сжатия или улучшения качества одного статичного изображения с сохранением в нужном формате. Работает полностью офлайн на Pillow.
- Пошаговый мастер (5 шагов) — файл → сила сжатия → дополнительные опции → формат вывода → предпросмотр и сохранение.
- Поддерживаемые входные форматы: PNG, JPEG/JFIF, BMP, WebP (только статичные кадры). Не поддерживаются: GIF и анимированный WebP.
- При открытии: автоматический поворот по EXIF (
ImageOps.exif_transpose), сведения о файле (размер на диске, пиксели, режим цвета, альфа-канал, фрагмент EXIF при наличии). - Шаг «Сила сжатия»:
- Пресеты: Слабое, Среднее, Сильное, Экстремальное (каждый задаёт максимальную длинную сторону в пикселях и параметры качества для JPEG/WebP и уровень сжатия PNG).
- Вручную: максимальная длинная сторона (или режим без изменения числа пикселей), отдельные ползунки для JPEG-качества, WebP-качества и PNG
compress_level, оценка размера итогового файла для выбранного формата на шаге 4.
- Дополнительные параметры:
- удаление метаданных из сохраняемого файла (EXIF, IPTC, XMP и т.п.) — только метаданные, не пиксели;
- «Лучший ресайз и чуть более мягкое сжатие» — ресемплинг LANCZOS вместо BOX и небольшое повышение качества JPEG/WebP при сохранении (файлы могут стать чуть тяжелее).
- Форматы сохранения: JPEG (
.jpg), PNG (альфа сохраняется), WebP (с потерями), BMP (большие файлы без сильного сжатия; для альфы — подложка). - Прозрачность при JPEG/BMP: диалог выбора белого или чёрного фона как подложки.
- Шаг предпросмотра: две панели «Оригинал» и «Результат», масштаб колесом мыши, панорама зажатой левой кнопкой; краткая сводка размеров; выбор папки и имени файла; перезапись с подтверждением при совпадении имени.
- Стартовый экран — «Сжатие изображения» или «Улучшение качества»; «Назад» на шаге 1 возвращает на главный экран.
- Подрежимы: улучшение без изменения размера в пикселях; увеличение сторон (ползунок 1.25×–4×, шаг 0.25).
- Движки (на выбор):
- Фильтры (шум, резкость) — медианный фильтр, Unsharp Mask, яркость и контраст; при upscale — выбранный метод интерполяции (по умолчанию LANCZOS).
- Только увеличение — чистый resize без «умной» коррекции на этом шаге; фильтры настраиваются отдельно (при upscale — на следующем шаге). Сочетание «только увеличение» + «размер не менять» недоступно — в интерфейсе показывается подсказка об ошибке.
- Методы интерполяции: NEAREST, BOX, BILINEAR, HAMMING, BICUBIC, LANCZOS — у каждого краткое описание в мастере.
- Фильтры: быстрые пресеты Слабое / Среднее / Сильное и детальные ползунки (окно медианного фильтра 3×3 / 5×5 / 7×7, параметры Unsharp Mask, общая резкость, яркость, контраст).
- Живой предпросмотр на шагах настройки (2 и при upscale — 3): результат пересчитывается в фоне с задержкой ~0,4 с; для скорости используется уменьшенная копия (длинная сторона до 720 px), в подписи указаны итоговые размеры в пикселях.
- Оценка размера файла — на шагах улучшения с учётом выбранного формата (как в режиме сжатия).
- Шаги: при upscale — 6 (файл → увеличение → фильтры → доп. параметры → формат → сохранение); при «размер не менять» — 5 (фильтры объединены со шагом «Настройки и предпросмотр»).
- Большие результаты: предупреждение и подтверждение, если длинная сторона после upscale превышает 8192 px.
- О Программе — версия, описание, статус Python / Tkinter / Pillow / tkinterdnd2.
- О Разработчике — ссылка на репозиторий, лицензия MIT.
- Windows 10/11 (ориентировано на запуск с ПК пользователя).
- Python 3.10+ рекомендуется (совместимо с официальной сборкой Python для Windows).
Из requirements.txt:
- Pillow — чтение/запись изображений, EXIF, ресайз, кодеки, фильтры улучшения.
- tkinterdnd2 — перетаскивание файла в область предпросмотра (шаг 1). Если пакет не установлен, приложение всё равно запускается, но drag-and-drop недоступен.
- PyInstaller — только для сборки исполняемого файла (см. DEPLOY).
Встроенный в Python модуль tkinter нужен для графического интерфейса.
Подробнее см. DEPLOY.
Кратко:
-
Установите Python для Windows и при установке включите опцию Add Python to PATH.
-
В каталоге проекта выполните:
python -m pip install -r requirements.txt -
Запуск приложения:
Через пакетный файл (из корня репозитория):
run_compress_wizard.batИли вручную:
python src\main.py
На главном экране выберите Сжатие или Улучшение качества.
-
Шаг 1 — Файл
Нажмите «Открыть файл…» или (при установленномtkinterdnd2) перетащите изображение на область предпросмотра. Справа отобразятся сведения о файле и мини-предпросмотр. -
Шаг 2 — Сила сжатия
Выберите Пресеты и один из уровней; рядом появится оценка размера файла для вашего образца после применения выбранного пресета (с учётом опций шага 3 и формата с шага 4). Либо переключитесь на Вручную, настройте длинную сторону или отметьте «Не уменьшать размер», задайте ползунки качества и посмотрите строку «Оценка размера». -
Шаг 3 — Дополнительные параметры
При необходимости включите удаление метаданных и/или режим более качественного ресайза и сжатия. Пояснения к опциям даны под флажками в интерфейсе. -
Шаг 4 — Формат сохранения
Укажите целевой формат (JPEG, PNG, WebP, BMP). Имя файла по умолчанию синхронизируется с расширением при переходе дальше. Если выбраны JPEG или BMP и в изображении есть прозрачность, появится запрос подложки (белый/чёрный). -
Шаг 5 — Предпросмотр и сохранение
Дождитесь построения предпросмотра. Нажмите «Сжать».
- Шаг 1 — Файл — как в режиме сжатия.
- Шаг 2 — Настройки (при upscale — «Увеличение»):
- выберите подрежим, движок, масштаб и метод интерполяции (для upscale);
- при «размер не менять» + движок «Фильтры» — настройте фильтры на этом же шаге;
- слева — живой предпросмотр (колёсико — масштаб, ЛКМ — сдвиг), справа — оценка размера выходного файла.
- Шаг 3 — Фильтры (только при upscale) — пресеты и детальные настройки; предпросмотр показывает результат после увеличения и фильтров.
- Дополнительные параметры — при необходимости удаление метаданных.
- Формат сохранения — JPEG, PNG, WebP, BMP; для JPEG/BMP с прозрачностью — выбор подложки.
- Предпросмотр и сохранение — сравнение «Оригинал» / «Результат», папка и имя файла, кнопка «Улучшить».
При подрежиме «размер не менять» отдельного шага «Фильтры» нет (5 шагов всего).
При ошибках открытия или неподдерживаемых форматах приложение показывает сообщение об ошибке (анимация GIF/WebP отклоняется явно).
| Модуль | Назначение |
|---|---|
src/main.py |
Интерфейс мастера, оба режима |
src/image_pipeline.py |
Сжатие, кодирование, EXIF |
src/enhance_pipeline.py |
Оркестрация улучшения |
src/enhance_settings.py |
Параметры улучшения и фильтров |
src/enhance_backends/ |
Движки Pillow (pillow_classic, pillow_resize_only) |
src/preview_worker.py |
Фоновый предпросмотр и оценка размера |
См. DEPLOY.
Проект распространяется по лицензии MIT — см. файл LICENSE.