Skip to content

ppvikentiy/compess

Repository files navigation

Static Badge Static Badge

Мастер сжатия и улучшения изображений

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.

Кратко:

  1. Установите Python для Windows и при установке включите опцию Add Python to PATH.

  2. В каталоге проекта выполните:

    python -m pip install -r requirements.txt
    
  3. Запуск приложения:

    Через пакетный файл (из корня репозитория):

    run_compress_wizard.bat
    

    Или вручную:

    python src\main.py
    

Инструкция по использованию

На главном экране выберите Сжатие или Улучшение качества.

Сжатие

  1. Шаг 1 — Файл
    Нажмите «Открыть файл…» или (при установленном tkinterdnd2) перетащите изображение на область предпросмотра. Справа отобразятся сведения о файле и мини-предпросмотр.

  2. Шаг 2 — Сила сжатия
    Выберите Пресеты и один из уровней; рядом появится оценка размера файла для вашего образца после применения выбранного пресета (с учётом опций шага 3 и формата с шага 4). Либо переключитесь на Вручную, настройте длинную сторону или отметьте «Не уменьшать размер», задайте ползунки качества и посмотрите строку «Оценка размера».

  3. Шаг 3 — Дополнительные параметры
    При необходимости включите удаление метаданных и/или режим более качественного ресайза и сжатия. Пояснения к опциям даны под флажками в интерфейсе.

  4. Шаг 4 — Формат сохранения
    Укажите целевой формат (JPEG, PNG, WebP, BMP). Имя файла по умолчанию синхронизируется с расширением при переходе дальше. Если выбраны JPEG или BMP и в изображении есть прозрачность, появится запрос подложки (белый/чёрный).

  5. Шаг 5 — Предпросмотр и сохранение
    Дождитесь построения предпросмотра. Нажмите «Сжать».

Улучшение

  1. Шаг 1 — Файл — как в режиме сжатия.
  2. Шаг 2 — Настройки (при upscale — «Увеличение»):
    • выберите подрежим, движок, масштаб и метод интерполяции (для upscale);
    • при «размер не менять» + движок «Фильтры» — настройте фильтры на этом же шаге;
    • слева — живой предпросмотр (колёсико — масштаб, ЛКМ — сдвиг), справа — оценка размера выходного файла.
  3. Шаг 3 — Фильтры (только при upscale) — пресеты и детальные настройки; предпросмотр показывает результат после увеличения и фильтров.
  4. Дополнительные параметры — при необходимости удаление метаданных.
  5. Формат сохранения — JPEG, PNG, WebP, BMP; для JPEG/BMP с прозрачностью — выбор подложки.
  6. Предпросмотр и сохранение — сравнение «Оригинал» / «Результат», папка и имя файла, кнопка «Улучшить».

При подрежиме «размер не менять» отдельного шага «Фильтры» нет (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.

About

Офлайн-приложение для Windows: пошаговое сжатие и улучшение изображений (PNG, JPEG, WebP, BMP). Python, Tkinter, Pillow

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors