Сжатие данных: почему файлы можно уменьшить (Приложение С)
Сжатие данных: почему файлы можно уменьшить (Приложение С)
Опубликовано: 11.04.2026
Сжатие данных: почему файлы можно уменьшить - и до какого предела
Как ZIP находит повторы, почему JPEG выбрасывает часть картинки и отчего уже сжатый файл не сжимается повторно
В статье про биты и байты мы упомянули, что минута несжатого звука занимает около 10 мегабайт, а видео в хорошем качестве - сотни мегабайт в секунду. В реальности музыкальный трек весит несколько мегабайт, а полуторачасовой фильм - пару гигабайт. Разница - в сжатии. Разберёмся, как оно работает и почему не бесконечно.
🔁 Главная идея: избыточность
Любое сжатие эксплуатирует одно свойство реальных данных - избыточность. Большинство файлов содержат повторения, закономерности, предсказуемые паттерны. Чистый случайный шум - несжимаем по определению, в нём нет ничего лишнего. Но реальные тексты, изображения и звук устроены иначе: в них очень много предсказуемого.
Возьмём простой пример. Представьте, что нужно записать строку: «аааааааааа» - десять букв «а» подряд. Можно записать все десять. А можно записать: «10 раз а» - и это займёт меньше места, неся ровно ту же информацию. Именно на этом принципе построено всё сжатие без потерь.
📦 Сжатие без потерь: данные восстанавливаются точно
Сжатие без потерь гарантирует: после распаковки файл будет побайтово идентичен оригиналу. Это критично для текстов, программ, таблиц - любых данных, где каждый бит важен.
Кодирование повторов
Самый простой алгоритм - RLE (Run-Length Encoding — кодирование длин серий). Вместо того чтобы хранить «белый, белый, белый, белый, белый, белый», он хранит «6 белых». Хорошо работает для изображений с большими однотонными областями - например, для скриншотов с белым фоном или простой графики. Плохо работает для фотографий, где почти нет одинаковых соседних пикселей.
Словарное сжатие
Алгоритмы семейства LZ (по именам авторов - Лемпел и Зив, 1977 год) работают хитрее. Они строят словарь из уже встреченных последовательностей байт и заменяют повторные вхождения ссылками на словарь. Встретили слово «компьютер» - добавили в словарь. Встретили снова - записали не само слово, а короткую ссылку: «то же, что запись номер 47». Чем длиннее файл и чем больше в нём повторов - тем лучше сжатие.
На этом принципе построены ZIP, gzip, форматы PNG и многие другие. Текстовый файл сжимается в несколько раз - в нём много повторяющихся слов. Исходный код программы - тоже хорошо: ключевые слова языка встречаются постоянно. Уже сжатый файл - почти не сжимается: словарь не находит повторов там, где их нет.
Коды Хаффмана: частые символы - короче
Ещё один классический приём - кодирование Хаффмана. Идея: зачем тратить одинаковое количество битов на все символы, если одни встречаются гораздо чаще других? В русском тексте буква «о» встречается намного чаще, чем «ъ». Если «о» закодировать двумя битами, а «ъ» - двенадцатью - суммарно файл станет меньше, хотя каждый символ кодируется по-разному.
Это та же логика, что и в азбуке Морзе: точка - самый короткий сигнал, буква «е» - самая частая в английском. Хаффман формализовал этот принцип математически и доказал, что его метод даёт оптимальный результат для данного распределения символов. Коды Хаффмана используются внутри ZIP, JPEG, MP3 и многих других форматов.
🎨 Сжатие с потерями: выбрасываем то, чего не заметят
Для фотографий, музыки и видео можно пойти дальше: выбросить часть данных совсем, если человек всё равно этого не заметит. Так работает сжатие с потерями. Восстановить оригинал после него невозможно - но результат выглядит и звучит достаточно хорошо.
JPEG: фотографии
JPEG разбивает изображение на блоки 8×8 пикселей и применяет к каждому математическое преобразование - дискретное косинусное преобразование (ДКП). Оно раскладывает блок на набор волн разных частот: грубые контуры - это низкие частоты, мелкие детали - высокие. Затем JPEG выбрасывает высокочастотные компоненты - те самые мелкие детали, которые глаз плохо различает. Чем сильнее «качество» снижено - тем больше выброшено, тем меньше файл и тем заметнее артефакты.
Именно поэтому сохранённая в JPEG фотография, пересохранённая ещё раз, теряет качество снова: каждое сохранение выбрасывает новую порцию деталей. И именно поэтому скриншот с текстом лучше сохранять в PNG - сжатие без потерь сохранит чёткие края букв, а JPEG их размоет.
MP3 и AAC: звук
Алгоритмы сжатия звука эксплуатируют особенности человеческого слуха. Ухо плохо слышит тихий звук, если рядом играет громкий — это явление называется маскировкой. MP3 анализирует звуковой сигнал, определяет, какие частоты маскируются другими, и кодирует их с меньшей точностью или не кодирует вовсе. Частоты выше 16–18 кГц большинство взрослых людей и вовсе не слышат - их тоже можно выбросить. В результате файл уменьшается в 10 раз при почти неразличимой разнице в звучании.
Видео: межкадровое сжатие
Видео сжимается особенно эффективно, потому что между соседними кадрами обычно очень мало различий. Если камера снимает человека на фоне стены - стена почти не меняется от кадра к кадру. Видеокодеки вроде H.264 и H.265 хранят не каждый кадр целиком, а только разницу между кадрами. Полный кадр сохраняется раз в несколько секунд - он называется ключевым кадром, или I-фреймом. Остальные кадры хранят только то, что изменилось: «объект сдвинулся на 12 пикселей вправо», «этот блок теперь темнее на 5%». Это и есть причина, по которой сцены с резкими монтажными склейками или быстрым движением «бьются» при низком битрейте - там много различий между кадрами, и кодек не успевает.
| Формат | Тип сжатия | Для чего | Степень сжатия |
|---|---|---|---|
| ZIP, gzip | Без потерь (LZ + Хаффман) | Любые файлы, архивы | 2–10× для текста, почти 1× для уже сжатых |
| PNG | Без потерь | Изображения с текстом, скриншоты, графика | 2–5× для простой графики |
| JPEG | С потерями (ДКП) | Фотографии | 10–20× при хорошем качестве |
| MP3, AAC | С потерями (психоакустика) | Музыка, подкасты | ~10× по сравнению с WAV |
| H.264, H.265 | С потерями (межкадровое) | Видео | 100–1000× по сравнению с несжатым |
| FLAC | Без потерь | Музыка в максимальном качестве | ~2× по сравнению с WAV |
🔗 Сжатие и всё, что мы уже знаем
Сжатие пронизывает весь стек, который мы разбирали в цикле. Файловая система хранит сжатые файлы на диске. Браузер получает сжатые HTML и CSS по сети - сервер сжимает их gzip или Brotli перед отправкой, браузер распаковывает на лету. Видеокарта декодирует сжатые видеопотоки с YouTube - именно для этого в GPU есть специальный аппаратный декодер, чтобы не нагружать основной процессор. Фотографии в мессенджере пересжимаются на сервере перед доставкой - отсюда потеря качества при пересылке.
Каждый раз, когда данные куда-то передаются или где-то хранятся, вопрос сжатия незримо присутствует: что можно выбросить без потерь, что - с потерями, и до какого предела. Ответ всегда один и тот же - до предела энтропии.
© 2008–2026 ANY.BY - ремонт компьютеров и ноутбуков в Барановичах. Использование материалов сайта возможно с письменного разрешения.
📍 Привезите технику в сервис ANY.BY - диагностика бесплатно, работаем без выходных.
🛒 Ноутбуки, компьютеры и комплектующие - магазин magaz.by.
📞 +375 (33) 323-70-00 (МТС) | +375 (29) 323-70-00 (A1)
✉️ Telegram | Viber
📞 Мы на связи для Вас:
| Пн–Пт | 10:00–19:00 |
| Суббота | 11:00–17:00 |
| Воскресенье | 12:00–16:00 |
Хочу выразить благодарность специалистам сервисного центра «Any.by» за оперативный и качественный ремонт ноутбука Asus. Ремонт планшета произведен быстро и качественно. Спасибо за понятное и доходчивое разъяснение проблемы.
Очень хороший сервис, мастер всё объяснил и быстро починил компьютер. Спасибо!
Профессиональный подход, вежливое обслуживание и качественный ремонт. Осталась очень довольна.
Понадобилось срочно починить ноутбук для работы. Сделали за один день. Очень выручили, спасибо!
Ремонт выполнен качественно и в короткие сроки. Рекомендую всем, кто ищет надёжного специалиста по ремонту ноутбуков.
Отличный сервис, рекомендую. Сделали быстро и качественно.
Качественный сервис. Индивидуальный подход к каждому клиенту. Рекомендую.
Благодарю за качественный ремонт. Осталась довольна результатом и ценой.
Очень довольна результатом. Всё работает исправно, спасибо большое!
Обращался по поводу чистки ноутбука и замены термопасты. Сделали всё быстро, аккуратно, предоставили фотоотчёт. Ноутбук перестал греться. Рекомендую!
Цикл статей ANY.BY — от транзистора до интернета.
Простым языком, без лишней теории.