Как сжать фото без потери качества (честный разбор)
Каждый компрессор изображений в интернете обещает уменьшить ваши файлы «без потери качества», и почти никто из них не имеет это в виду буквально. На самом деле они имеют в виду, что вы не заметите потерю. Это другое утверждение, более слабое, и, вот в чём поворот, вполне разумное, потому что «никто не видит разницы» и есть тот самый стандарт, который имеет значение. Проблема в том, что большинство инструментов гонятся за ним вслепую. Понимание того, что происходит на самом деле, даёт вам файлы вдвое меньшего размера без видимой разницы, а заодно уверенность в том, когда это обещание правдиво.
Что на самом деле означает «потеря качества»
Фото с современного телефона несёт куда больше информации, чем способен показать любой экран. Шум матрицы, микротекстура в тенях, на которые никто не смотрит, оттенки цвета тоньше, чем может передать ваш дисплей, тоньше, чем способен различить глаз, даже если бы мог. Сжатие работает через отбрасывание данных, и вся суть игры в том, чтобы отбросить именно те данные, которые никогда не приносили вам пользы.
Сделайте это аккуратно, и результат станет тем, что инженеры называют визуально безупречным сжатием: байты изменились, картинка нет, ни при каком увеличении, доступном вашему глазу. Сделайте это жадно, и вы получите артефакты, которые узнает каждый: смазанный текст, блочное небо, лица, будто слегка намазанные маслом. Между этими крайностями проходит граница, и всё мастерство сжатия в том, чтобы остановиться чуть раньше неё.
Почему одна настройка не подходит для всех фото
Вот в чём ошибаются почти все инструменты. Эта граница проходит в разном месте для каждого отдельного изображения. Туманный пейзаж почти целиком состоит из плавных градиентов и переживает агрессивное сжатие без единой царапины. Чёткий архитектурный снимок с тонкими перилами и кирпичной кладкой показывает повреждения при настройках, которые пейзаж бы даже не заметил. Поэтому когда компрессор применяет «качество 80» ко всему подряд, он по определению ошибается дважды: слишком осторожничает с простым фото, впустую тратя байты, и слишком грубо обращается со сложным, теряя детали.
Более правильный подход обескураживающе прост: сжать фото, сравнить результат с оригиналом так, как это сделал бы человеческий глаз, и продолжать сжимать, пока не окажешься на волосок от той точки, где разницу уже можно заметить. Для «так, как это сделал бы человеческий глаз» существует настоящая математика: оценка перцептивного сходства, построенная на том, как зрение на самом деле взвешивает структуру изображения, и она способна прогнать цикл «сжать и сравнить» десятки раз за секунды, которые человек тратить бы не стал. Каждое фото попадает точно на свою собственную границу. Именно так работает компрессор на этой странице, и именно поэтому его авто-режим стабильно убирает 40-70% веса файла, а сравнение бок о бок показывает две неотличимые друг от друга картинки.
Три правила, которые делают почти всю работу
Сжимайте один раз и с лучшей доступной копии. Потери JPG незаметны за одно поколение, но они накапливаются, поэтому фото, сжатое пять раз за свой путь, начинает показывать износ. Храните оригиналы, сжимайте копии, а если кто-то прислал вам уже маленький файл, удержитесь от соблазна сжать его ещё раз. Честный инструмент отказывается раздувать или портить файл, который он не может улучшить.
Проверьте, в чём настоящая проблема: в размере файла или в разрешении. Фото шириной 6000 пикселей, которое отправляется в чат, несёт в десять раз больше пикселей, чем способен показать любой экран. Сжатие помогает, но если снимок предназначен для мелкого использования, изменение размера, вот главный рычаг, а вместе эти два приёма превращают фото на 8 МБ в файл на 300 КБ.
Подбирайте формат под содержимое. Сжатие скриншота как JPG размажет его текст независимо от аккуратности настроек: эта работа принадлежит PNG. Фотографии, застрявшие в PNG, платят огромную цену в размере ради качества, которое никто не заметит, чему посвящена отдельная статья. А если конечная цель, веб, современные форматы вроде WebP дают ещё около 25% при том же визуальном качестве.
О чём никто не упоминает: куда уходит ваше фото
Самые популярные сайты для сжатия работают так: загружают ваше изображение на свои серверы, сжимают его там и отправляют обратно. Подумайте, что именно люди сжимают: каждое фото на телефоне перед резервным копированием, сканы документов, снимки семьи. Всё это совершает путешествие туда и обратно через компьютеры чужой компании, под управлением политики конфиденциальности, которую никто не читал, под защитой, которую никто не может проверить.
Ничего из этого больше не нужно. Описанный выше цикл перцептивного сжатия и сравнения теперь целиком выполняется в вашем браузере, на вашем собственном железе, и никуда ничего не отправляется. Режим полёта и есть доказательство: компрессор ниже работает с выключенной сетью, потому что в этой истории вообще нет сервера.
Смотрите сами, а не верьте на слово
Обещания о качестве ничего не стоят, и не стоит принимать их на веру, включая обещания на этой странице. Компрессор ниже показывает сравнение «до и после» с ползунком, который вы перетаскиваете по изображению, так что вы можете рассмотреть своё собственное фото в полном размере и сами поискать различия. Загрузите самое большое фото, какое у вас есть. Авто-режим найдёт свою границу, покажет вам экономию и оставит последнее слово за вашими глазами, где оно и должно было быть с самого начала.