К содержимому
--:--
местное время
EVS.CODER / navigation

Навигация

На связи

TelegramGitHubLinkedIn

DESKTOP APP / UBUNTU + WINDOWS

Image Converter

Desktop-приложение для Ubuntu и Windows: пакетная оптимизация изображений, предпросмотр сжатия и сохранение файлов на компьютере.

  • Tauri 2
  • Rust
  • React
  • TypeScript
  • JSZip
Исходный код на GitHub
Оригинал и результат сжатия в WebP, прогноз размера для трёх файлов

01 / CONTEXT

Подготовка изображений на компьютере

При подготовке нескольких изображений нужно выбрать формат, подобрать качество, ограничить размеры и последовательно назвать файлы. Приложение объединяет эти действия в одном интерфейсе и показывает, как настройки влияют на результат.

Приложение построено на Tauri 2: React отвечает за интерфейс, Rust — за нативную обработку WebP и PNG, а плагины Tauri — за системные диалоги и запись файлов. Изображения обрабатываются локально, без отправки на сервер. Дополнительно доступен браузерный режим; текущие скриншоты сняты в нём.

02 / PLATFORMS

Ubuntu и Windows

В проекте настроена сборка desktop-приложения для двух операционных систем. Интерфейс и логика обработки общие, а установщики собираются под каждую платформу отдельно.

  • Ubuntu. Пакет .deb для установки и AppImage для запуска приложения.
  • Windows. Установщик .exe через NSIS и пакет .msi.

03 / INTERFACE

От загрузки до файлов в выбранной папке

  1. Загрузить изображения. Добавить файлы через выбор или перетаскивание, посмотреть миниатюры и выбрать изображение для сравнения.
  2. Подобрать настройки. Выбрать WebP, JPEG или PNG, качество и максимальную ширину. Для PNG настройка качества отключена.
  3. Оценить результат. Сравнить оригинал и обработанный файл. Прогноз показывает размер всех файлов и экономию либо увеличение объёма.
  4. Сохранить файлы. Выбрать папку системным диалогом, запустить обработку и записать файлы на компьютер. Для переноса результатов доступен ZIP.
Загруженные изображения, сравнение и настройки пакетной обработки
Рабочий экран: файлы, предпросмотр и параметры конвертации.

04 / ENGINEERING

Что стоит за интерфейсом

React-интерфейс и нативная обработка на Rust

Tauri связывает React-интерфейс с Rust: WebP и PNG передаются в нативный обработчик бинарным IPC-запросом. Обработка вынесена в spawn_blocking, изменение размера сохраняет пропорции. JPEG в текущем frontend-пути использует Canvas; Canvas также обеспечивает дополнительный браузерный режим.

Несколько способов сохранить результат

Системный диалог Tauri позволяет выбрать папку, а плагин файловой системы записывает обработанные изображения на диск. Результаты получают базовое имя и последовательную нумерацию. ZIP-архив сохраняется через системный диалог; в браузерном режиме предусмотрено скачивание архива.

Один результат для трёх сценариев

Предпросмотр, прогноз общего размера и итоговая конвертация используют общий кеш обещаний обработки. Ключ включает файл, формат, качество и максимальную ширину. Повторный запрос с теми же параметрами переиспользует вычисление, а ошибка удаляет запись из кеша.

Ограниченная параллельность

Загрузка миниатюр и конвертация выполняются с двумя параллельными задачами, прогноз — с одной. Такой подход ограничивает число одновременно декодируемых изображений. Предпросмотр запускается с задержкой 200 мс, прогноз — 600 мс; устаревшие результаты не обновляют интерфейс.

← Все проекты