Сегодня ImgZilla 1.3 официально вышла в Mac App Store.
Её основная функция предельно ясна: сжимать изображения на Mac прямо на месте — без изменения имени файла, пути и формата; оригинал по умолчанию попадает в корзину, откуда его можно восстановить в любой момент.
Все операции выполняются на вашем собственном Mac, без подключения к сети: изображения не покидают компьютер и не загружаются ни на какие серверы — приватность и безопасность данных были базовыми принципами с самого начала проектирования.
Эта возможность выглядит просто, но мы много раз тестировали, отменяли решения и переделывали её. Эта статья — не о том, «какие функции мы сделали», а о конкретных проблемах, с которыми мы столкнулись в реальных сценариях использования, и о том, к чему в итоге пришли.
«Перезапись на месте» — с этими словами нельзя быть небрежным
Большинство инструментов сжатия изображений сохраняют результат как photo-min.jpg — это безопасно, но оставляет хлопоты: меняется имя файла, и ссылки в таблицах товаров, пути в шаблонах сайтов, сортировка в архивных каталогах — всё нужно обновлять.
ImgZilla выбрала другой путь: результат сжатия записывается прямо по исходному пути, с исходным именем файла и в исходном формате. JPG остаётся JPG, и ссылки не нужно менять ни на одну строку.
Цена такого подхода: инструмент работает с оригинальными файлами пользователя. Если где-то произойдёт ошибка, потеряется не кэш, а фотографии, снятые за целый день, или коллекции, собиравшиеся годами.
Поэтому по-настоящему много времени ушло не на само сжатие — с этим справляются зрелые кодеки — а на защиту на случай «а вдруг». Все описанные ниже улучшения были реально обнаружены и исправлены в ходе тестирования.
Несколько вещей, изменённых в ходе тестирования
1. Стратегия защиты оригиналов: её пришлось полностью переделывать
В первоначальном варианте оригиналы копировались в отдельный каталог резервных копий. Логика была верной, но пользоваться этим было неудобно: каталог резервных копий незаметно разрастался, и через несколько месяцев пользователь обнаруживал на диске полную копию всех файлов — хотя изначально хотел именно сэкономить место.
Теперь мы действуем по принципу «сначала корзина»: при успешном сжатии оригинал сначала перемещается в системную корзину, а затем результат сжатия записывается на исходное место.
Восстановление стало операцией, которую уже умеет каждый пользователь Mac: открыть корзину, щёлкнуть правой кнопкой мыши и выбрать «Вернуть на место». Не нужно изучать новые понятия, и не появляется скрытый каталог, который постоянно растёт. Эта опция включена по умолчанию в настройках; если её выключить, файлы будут перезаписываться без возможности восстановления, поэтому при отключении появляется дополнительное подтверждение.
2. Диалог на внешних дисках появился благодаря тестированию
При тестировании на внешних дисках, NAS и сетевых томах мы столкнулись с распространённой проблемой macOS: в этих местах часто невозможно переместить файлы в корзину.
В первой версии обработка сводилась к ошибке и пропуску файла — в итоге пользователь перетаскивал целую папку, и ничего не происходило.
Теперь поведение такое: сжатие приостанавливается, и появляется диалог с выбором:
- Выбрать каталог резервных копий: оригинал копируется туда, затем перезаписывается на месте;
- Отказаться от резервной копии: после повторного подтверждения файл перезаписывается без сохранения копии;
- Закрыть диалог: это расценивается как отмена, и вся задача останавливается.
Ещё одна деталь появилась именно в ходе тестирования: выбранный вариант применяется ко всем оставшимся файлам текущей задачи, иначе для 500 изображений диалог появлялся бы 500 раз подряд — так и было в первой версии, и уже после одного использования это стало невыносимо.
Выбранный каталог резервных копий запоминается как место резервного копирования по умолчанию (внутри
~/Library/Application Support/ImgZilla Backups/создаются подкаталоги с отметкой времени) и приоритетно используется в аналогичных ситуациях.
3. «Уже минимален»: лучше ничего не делать
Некоторые изображения уже были сжаты до того, как попали в программу (неважно, другим инструментом или ранее в ImgZilla), и повторное сжатие обычно даёт изменение объёма лишь на доли процента. Мы установили жёсткое правило: если степень сжатия меньше 0,4%, файл не трогаем — в списке он помечается как «Уже минимален», оригинал остаётся без изменений, и бесплатная квота не расходуется.
Это правило делает статистику менее впечатляющей: если перетащить целую коллекцию уже сжатых изображений, большинство из них может отобразиться как «Уже минимален». Но мы считаем, что инструмент, который ради красивых цифр сжимает ваши изображения повторно, не заслуживает доступа к вашим оригиналам.
4. Когда расширение обманывает
В тестовых образцах нередко встречались файлы с расширением .png, которые на самом деле были JPEG, — таких изображений, прошедших через множество источников, больше, чем можно предположить.
Теперь ImgZilla считывает магические байты из заголовка файла, чтобы определить фактический формат, и выбирает кодировщик по фактическому формату. Даже если расширение указано неверно, файл будет обработан правильно.
5. Последовательная обработка, а не параллельная
Сжатие по одному файлу может показаться «недостаточно быстрым». Мы пробовали параллельный режим — скорость действительно выросла, но при ошибках в больших пакетах становилось трудно отследить состояние, а ведь инструмент перезаписывает оригинальные файлы пользователя.
Стабильность важнее пиковой скорости, поэтому в итоге оставили последовательную обработку. Стоит уточнить: последовательность относится к обработке задач по одной, а сам процесс сжатия каждого изображения внутри кодировщика использует многопоточность и не простаивает многоядерный процессор. В качестве компенсации в интерфейсе мы сделали следующее: текущий обрабатываемый элемент автоматически прокручивается в видимую область, при наведении курсора автопрокрутка приостанавливается, внизу в реальном времени отображается количество обработанных файлов и сэкономленный объём, а по завершении приходит системное уведомление.
6. Когда бесплатная квота исчерпана, задача «приостанавливается», а не «прерывается»
Бесплатная версия позволяет сжимать 10 изображений в день, квота автоматически сбрасывается на следующие сутки. В ходе тестирования мы поняли, что момент прерывания критически влияет на впечатление: если перетащить 200 изображений и на 10-м всё завершится ошибкой, пользователю придётся заново добавлять все файлы — такое сообщение становится чистым раздражителем.
Теперь поведение такое: когда квота заканчивается, задача приостанавливается на месте и появляется панель покупки; после оплаты сжатие продолжается с точки остановки, и ни один файл не нужно добавлять заново. Кроме того, квота расходуется только при успешном сжатии — неудачное сжатие или статус «Уже минимален» не учитываются.
7. 19 языковых вариантов и не слишком заметный финальный штрих
Интерфейс полностью поддерживает 19 языковых вариантов (включая «Следовать за системой», упрощённый и традиционный китайский, English, 日本語, 한국어, основные европейские языки, العربية, Tiếng Việt и другие). Язык можно сменить в настройках в любой момент, изменения применяются сразу, без перезапуска.
Объём этой работы значительно превзошёл ожидания и стал одной из причин переноса даты выпуска. Но для инструмента, представленного в мировом App Store, возможность увидеть родной язык — это базовое уважение к пользователю.
О качестве изображения: не верьте нам на слово, посмотрите сами
Самое сложное в сжатии — это доверие. Поэтому скажем прямо:
- PNG (oxipng) и SVG (svgcleaner) — это настоящее сжатие без потерь, пиксели не меняются;
- JPEG, WebP, AVIF, HEIC/HEIF, GIF в принципе являются перекодированием с потерями, но параметры выбраны в диапазоне визуально без потерь — глаз практически не замечает разницы, но это не «без потерь», и мы не смешиваем эти два понятия.
Более того, вам не обязательно принимать это на веру. В ImgZilla встроено окно сравнения изображений (⌘D): слева — до сжатия, справа — после; перемещайте разделительную линию по центру, чтобы сравнивать, и увеличивайте до фактического размера, чтобы внимательно рассмотреть детали. Для каждого успешно сжатого изображения в списке можно вызвать сравнение в один клик.
Если результат не устраивает — откройте корзину и верните оригинал на место. Этот запасной выход есть всегда.
Параметры фиксированы, ползунка качества в интерфейсе нет. Это осознанный выбор: для настройки нужно понимать таблицы квантования, метод кодирования, скорость и другие специальные понятия; ошибётесь — либо не получите сжатия, либо испортите картинку. Мы сделали это за вас: параметры для каждого формата откалиброваны отдельно, перетащите файл и нажмите «Сжать» — вы получите оптимальный баланс для данного формата при текущих настройках.
Если вы привыкли настраивать параметры сжатия самостоятельно, мы всё равно советуем сначала попробовать ImgZilla — параметры уже откалиброваны и, возможно, сэкономят вам время на пробы и ошибки.
Чего она не делает
Не менее важные границы, которые мы перечислим здесь, чтобы вы не узнали о них после загрузки:
- Только macOS (12.3 и новее). Нет версии для Windows, нет версии для iOS, нет веб-версии.
- Не конвертирует форматы. JPG после сжатия останется JPG, а не станет WebP.
- Не меняет размер. Не уменьшает разрешение, не обрезает.
- Не гарантирует, что файл обязательно уменьшится. Уже оптимизированные изображения, скорее всего, вообще не сожмутся и будут честно помечены как «Уже минимален».
- EXIF по умолчанию удаляется (включая GPS-координаты; файл становится меньше и лучше защищена приватность). Если вам нужно сохранить параметры съёмки, сведения об авторских правах и цветовой профиль, включите в настройках опцию «Сохранять EXIF» вручную.
Ещё один момент стоит подчеркнуть отдельно: всё сжатие выполняется локально на вашем Mac. Помимо проверки покупки в App Store, ImgZilla не требует подключения к сети, изображения не покидают ваш компьютер — никаких очередей, ограничений по количеству и «загрузки на чужие серверы» не существует. Все кодировщики — это локальные статические библиотеки, встроенные в приложение.
Теперь можно начинать пользоваться
- Бесплатная версия: 10 изображений в день, квота автоматически сбрасывается на следующие сутки, функции не урезаны.
- Снятие ограничений: постоянная лицензия (одна покупка, без ограничения количества) или помесячная подписка; цена отображается в зависимости от вашего региона App Store. При смене компьютера или переустановке нажмите «Восстановить покупки».
Рекомендуемый способ первого знакомства: перетащите любое не слишком важное изображение, после сжатия нажмите «Сравнить» и оцените качество своими глазами, прежде чем доверять программе целую папку.
Именно так, по нашему мнению, и следует использовать этот инструмент: сначала проверьте, потом доверяйте.
Если у вас есть вопросы или предложения, напишите нам через меню «Справка → Обратная связь». Версия 1.3 достаточно надёжна для повседневного использования, но она точно не станет последней.
ImgZilla 1.3 уже доступна в Mac App Store. Требуется macOS 12.3 или новее.