Сжатие данных и уменьшение размера файлов¶
Сжатие данных — это процесс уменьшения объёма информации путём удаления избыточности или перекодирования данных в более компактное представление. В контексте работы с файлами сжатие позволяет сократить объём занимаемого места на диске, ускорить передачу по сети и снизить нагрузку на каналы связи. Методы сжатия применяются к самым разным типам файлов: текстам, изображениям, аудио- и видеозаписям, архивам, базам данных.
¶Принципы сжатия
Все методы делятся на две большие группы — с потерями и без потерь.
¶Сжатие без потерь
При сжатии без потерь данные полностью восстанавливаются до исходного состояния. Объём файла уменьшается за счёт устранения статистической избыточности: повторяющихся последовательностей, редко встречающихся символов, шаблонов. Наиболее известные алгоритмы:
- Huffman coding — замена часто встречающихся символов короткими кодами, редких — длинными;
- LZ77 / LZ78 / DEFLATE — поиск и замена повторяющихся фрагментов ссылками на уже встречавшиеся последовательности;
- LZW — словарное сжатие, применялось в формате GIF;
- Brotli и Zstandard — современные алгоритмы с высокой степенью сжатия, используемые в вебе и системах хранения.
Такое сжатие незаменимо для текстов, исполняемых файлов, баз данных, где любое изменение данных недопустимо.
¶Сжатие с потерями
В отдельных случаях допускается необратимое изменение данных ради существенного уменьшения размера. Наиболее распространено в мультимедиа:
- JPEG — сжатие фотографий с удалением деталей, малозаметных для человеческого зрения;
- MP3, AAC, Ogg Vorbis — аудиоформаты, отбрасывающие звуки за порогом слышимости;
- H.264, H.265 (HEVC), AV1 — видеокодеки, использующие межкадровое предсказание и квантование.
Степень сжатия регулируется пользователем или программой: чем выше, тем меньше файл, но и тем ниже качество.
¶Архивация
Самый распространённый способ уменьшить объём группы файлов — упаковать их в архив. Популярные форматы:
| Формат | Тип сжатия | Особенности |
|---|---|---|
| ZIP | без потерь | Широко поддерживается, допускает шифрование |
| RAR | без потерь | Высокая степень сжатия, проприетарный |
| 7z | без потерь | Открытый, максимальная степень сжатия |
| GZIP, BZ2, XZ | без потерь | Стандартны в Linux-системах |
| TAR.GZ, TAR.BZ2 | без потерь | Объединение нескольких файлов + сжатие |
Архивация эффективна для текстов, таблиц, программных пакетов. Для уже сжатых форматов (JPEG, MP4) повторное сжатие почти не даёт выигрыша.
¶Уменьшение размера изображений
Изображения — один из основных источников «тяжёлых» файлов. Основные способы уменьшить их объём:
- Смена формата — переход с PNG на JPEG или WebP, с BMP на что-либо компактное.
- Снижение разрешения — уменьшение ширины и высоты в пикселях. Файл 4000×3000 при уменьшении до 1200×900 сжимается в несколько раз.
- Снижение качества — регулировка коэффициента квантования в JPEG (обычно 60–85 % достаточно для веба).
- Удаление метаданных — EXIF-данные камеры, GPS-координаты, профили ICC могут занимать десятки килобайт.
- Использование прогрессивного или сжатого варианта — Progressive JPEG, оптимизация PNG через инструменты типа pngquant.
¶Уменьшение размера видео
Видеофайлы обычно самые объёмные. Методы уменьшения:
- Перекодирование в более эффективный кодек — переход с MJPEG или старого MPEG-2 на H.264/H.265/AV1.
- Снижение битрейта — уменьшение количества бит на секунду (например, с 20 Мбит/с до 5 Мбит/с).
- Уменьшение разрешения — с 4K на 1080p или 720p.
- Снижение частоты кадров — с 60 fps до 30 fps.
- Обрезка ненужных фрагментов — удаление начал и концов, чёрных кадров.
- Удаление или пережатие звуковой дорожки — переход на AAC с меньшим битрейтом.
Инструменты: FFmpeg (командная строка), HandBrake, XMedia Recode.
¶Уменьшение размера PDF
Документы PDF нередко содержат встроенные шрифты, растровые копии векторной графики и сканы высокого разрешения. Способы уменьшения:
- Сжатие изображений внутри PDF (понижение DPI до 150–200).
- Удаление встроенных шрифтов или замена на стандартные.
- Удаление скрытых слоёв, метаданных, якорей.
- Пересохранение через Acrobat, Ghostscript (команда
gs -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook), SmallPDF, ILovePDF.
¶Уменьшение объёма текстовых файлов
Для текстов и документов:
- Сохранение в формате с сжатием (DOCX, ODT, EPUB — это ZIP-контейнеры).
- Удаление форматирования, картинок, скрытых элементов.
- Конвертация из сканированного PDF в текстовый формат (OCR-распознавание убирает растровые страницы).
- Применение более эффективной кодировки (UTF-8 вместо UTF-16 для латиницы).
¶Инструменты и программы
| Задача | Инструменты |
|---|---|
| Архивация | 7-Zip, WinRAR, WinZip, PeaZip |
| Изображения | XnConvert, RIOT, ImageMagick, Squoosh |
| Видео | HandBrake, FFmpeg, Avidemux |
| Ghostscript, Adobe Acrobat, PDF24 | |
| Диски | CCleaner, BleachBit (очистка мусора) |
¶Ограничения
Сжатие имеет физический предел: данные, уже являющиеся случайными или предварительно сжатыми (JPEG, ZIP, зашифрованные файлы), не уменьшаются. Степень достижимого сжатия оценивается теоремой Шеннона о сжатии произвольных данных. Кроме того, при сжатии с потерями неизбежен компромисс между размером и качеством.
Источники:
- Шеннон К. «Математическая теория связи»
- Седов Е. А. «Основы информатики»
- Документация проектов 7-Zip, FFmpeg, Ghostscript
- RFC 1951 (DEFLATE), RFC 7932 (Brotli)
