Сжатие с потерями
Сжатие с потерями — необратимое уменьшение объёма данных за счёт удаления деталей, которые человек почти не замечает. Так работают JPEG, MP3 и H.264; восстановить исходный файл после такой упаковки невозможно.
На чём именно экономят потерянные биты
Обратимые алгоритмы работают со статистикой файла и потому упираются в энтропию источника. Сжатие с потерями снимает это ограничение простым способом: оно решает, что часть информации получателю не нужна, и удаляет её. Дальше остаток пакуется уже обратимыми методами. Именно поэтому фотография ужимается в 10–20 раз там, где сжатие без потерь даёт от силы 2–3 раза.
Критерий «не нужна» берут из физиологии восприятия. Глаз различает яркость намного точнее, чем цвет, поэтому JPEG переводит картинку из RGB в цветовое пространство YCbCr и прореживает цветовые каналы: схема 4:2:0 хранит один цветовой отсчёт на четыре пикселя яркости, вырезая три четверти цветовой информации ещё до основного этапа. Затем изображение режется на блоки 8×8 пикселей, каждый блок раскладывается дискретным косинусным преобразованием на частотные составляющие, и коэффициенты высоких частот — мелкая текстура, резкие переходы — грубо округляются таблицей квантования. Ползунок «качество» в редакторе управляет именно жёсткостью этого округления.
Звук устроен аналогично. MP3 и AAC опираются на психоакустику: громкий тон маскирует соседние тихие частоты, а после резкого звука ухо на десятки миллисекунд теряет чувствительность. Маскируемые составляющие кодируются грубо или выбрасываются. Для речи и потокового звука сегодня чаще берут Opus (RFC 6716), у которого низкая задержка и приличное качество на скромном битрейте.
В видео добавляется третье измерение — время. H.264/AVC, H.265/HEVC и AV1 хранят целиком только опорные кадры, а между ними передают векторы движения блоков и разницу с предсказанием. Отсюда типичная картина: статичная сцена с говорящим человеком сжимается в разы плотнее, чем панорама листвы на ветру.
Битрейт, качество и накопление артефактов
Практическая настройка сводится к трём параметрам. Битрейт — сколько бит тратится на секунду звука или видео. Режим управления: CBR держит постоянный поток и удобен для эфира, VBR тратит больше на сложные участки, CRF (постоянное качество) сам подбирает битрейт под заданный уровень искажений. И собственно шкала качества, вроде JPEG quality от 0 до 100, где значения около 85–90 обычно визуально неотличимы от оригинала, а ниже 60 в кадре появляются заметные квадраты 8×8 и цветные каёмки вокруг контрастных границ.
Главная ловушка — накопление ошибки при перекодировании. Каждое пересохранение JPEG заново квантует уже искажённые коэффициенты, и деградация суммируется. Скриншот, десять раз пересланный через мессенджеры, теряет читаемость мелкого текста именно по этой причине: каждый сервис применяет свои настройки повторно. Из того же корня растёт правило монтажа — исходники держат в промежуточных форматах с малыми потерями или без них, а финальное сжатие делают один раз, на выдаче.
Современные форматы дают тот же уровень качества дешевле: WebP и AVIF на фотографиях обычно заметно легче JPEG при сопоставимой картинке, HEVC и AV1 экономят поток относительно H.264. Цена — вычислительная сложность кодирования и разная поддержка в старых устройствах; выбор конкретной реализации разбирается в термине кодек. Границу применимости обоих подходов задаёт энтропия информации: ниже неё без потерь не сжать.
Почему JPEG враждебен QR- и штрих-кодам
Код состоит ровно из того, что алгоритмы с потерями считают шумом: резких чёрно-белых границ на высокой частоте. Квантование коэффициентов DCT сглаживает такой перепад и оставляет вокруг модулей светло-серый ореол и «звон». Пока код крупный, декодер справляется, но на этикетке 15×15 мм, где модуль занимает три-четыре пикселя, соседние модули сливаются, и сканер перестаёт различать сетку. Дополнительно падает контраст, а требования к нему разобраны в термине контрастность QR-кода.
Практические выводы простые. Экспортируйте код в PNG или SVG и никогда не пересохраняйте его в JPEG. Не пересылайте макет для типографии через мессенджеры и соцсети: они пережимают вложения по своим правилам, и вы получите обратно уже испорченный файл — отправляйте архивом или ссылкой на файловое хранилище. Для печати берите вектор либо растр от 300 dpi, следите за тихой зоной вокруг символа и не масштабируйте маленькую картинку вверх. Типичные сценарии, где код перестаёт читаться после «оптимизации картинок» на сайте, разобраны в материале о том, почему QR-код не сканируется.
Отдельный случай — видео и фото, которые открываются по коду. Здесь потери уместны и полезны: ролик в H.264 или AV1 грузится по мобильной сети за секунды, а качества хватает для просмотра с телефона. Потери допустимы для контента, к которому ведёт код, и недопустимы для изображения самого кода.
Частые вопросы
Можно ли вернуть исходное качество из сжатого файла?
Нет. Удалённые коэффициенты и прореженные цветовые отсчёты не хранятся нигде, восстанавливать нечего. Фильтры шумоподавления и нейросетевые апскейлеры дорисовывают правдоподобные детали, но это домысливание, а не восстановление: мелкий текст на пережатом скриншоте они чаще угадывают неверно. Единственный способ получить оригинал — взять исходный файл.
Какое качество JPEG считается безопасным?
Для фотографий значения около 85–90 обычно визуально неотличимы от оригинала при заметной экономии объёма. Ниже 70 на однотонных участках и вокруг контрастных границ проступают квадраты 8×8 и цветной ореол. Для скриншотов, схем, текста и любых изображений с резкими границами JPEG лучше не использовать вовсе — там уместен PNG.
Почему QR-код с фотографии читается, а из мессенджера — нет?
Камера снимает код в высоком разрешении, и даже после сжатия модулей хватает на распознавание. Мессенджер уменьшает картинку по длинной стороне и пережимает её с низким качеством: на выходе модуль занимает один-два пикселя с размытыми краями. Отправляйте код файлом без сжатия либо давайте ссылку на PNG или PDF.
Чем WebP и AVIF лучше JPEG?
Оба используют более продвинутые схемы предсказания и разбиения на блоки, унаследованные от видеокодеков, поэтому при сопоставимом визуальном качестве весят ощутимо меньше. Оба умеют и режим без потерь, и прозрачность. Ограничения — более медленное кодирование и поддержка в совсем старых браузерах и программах вёрстки, что решается запасным JPEG или PNG.
Стоит ли сжимать с потерями сканы документов?
Осторожно. Мелкий шрифт, печати и штрих-коды на скане — это высокочастотные детали, которые страдают первыми. Для документов берут либо режим без потерь, либо специализированные профили PDF со щадящими настройками. Если скан дальше пойдёт в распознавание текста или считывание кода маркировки, потери напрямую снижают процент успешных распознаваний.