cloud cloud cloud cloud

Image Converter своё GTK4-приложение на Python для пакетной конвертации

Мне часто приходится обрабатывать папки с фотографиями, чтобы выложить их на сайт. Какого-то сверхкачества там не нужно: 1024 пикселей по ширине и webp формат — этого более чем достаточно для веба.

Раньше я обычно использовал проверенную консольную команду:

andrey@31350: ~
mogrify -format webp -resize 1024 -quality 90 *.jpg && rm -rf *.jpg

Метод быстрый, но «слепой» — автоматизировать рутину удобно, но, честно, я всегда забываю эту команду и вспоминаю её каждый раз, когда нужно обработать папку фоток. К тому же при ручной зачистке всегда есть риск случайно снести лишние исходники.

Мне надоело каждый раз набивать эти параметры в терминале, и я решил завернуть привычный функционал в простую, красивую графическую оболочку, которая всегда под рукой. Так родилось моё десктопное приложение на Python — Image Converter.

Image Converter

Что получилось

Это легковесное GUI-приложение, написанное на Python с использованием GTK 4 и libadwaita (через PyGObject). Интерфейс максимально линейный: выбираешь папку, исходный и целевой форматы, при необходимости вводишь нужные цифры размера/качества и жмешь одну кнопку.

  • Поддерживаемые форматы: JPG, JPEG, PNG, WebP, TIFF, BMP.
  • Безопасное удаление: исходники стираются только после успешной конвертации.
  • Наглядная статистика: вместо пустого терминала приложение выводит размер «до», «после» и точный процент сжатия для каждого файла.

Как это устроено внутри

Никакого Electron или тяжелых веб-технологий. Приложение выглядит нативным в Linux и почти не потребляет ресурсов.

Саму обработку графики я не стал изобретать с нуля. Раз уж консольный стек меня полностью устраивал, конвертация внутри приложения делегирована всё тому же ImageMagick (mogrify). Python-код просто собирает параметры из GUI, генерирует правильные аргументы и запускает утилиту в подпроцессе.

Упаковка во Flatpak

Чтобы приложение запускалось на любом дистрибутиве без ручной установки зависимостей, я упаковал его во Flatpak. Манифест com.aab.ImageConverter.json базируется на runtime GNOME 45 и сам в изолированном окружении собирает нужную версию ImageMagick.

Готовый пакет image-converter.flatpak можно перенести на любую машину и развернуть двумя командами:

andrey@31350: ~
flatpak install image-converter.flatpak
flatpak run com.aab.ImageConverter

Никаких конфликтов с системным pip или версиями библиотек — всё работает из коробки в песочнице.

Исходники

Проект полностью открыт под лицензией MIT и опубликован на платформе ALT Linux Space .