Какие файлы нельзя сжать

Обновлено: 30.06.2024

Данный материал предназначен для тех, кто не разбирается в алгоритмах сжатия цифровой информации, но хочет получить общее представление о том, как они работают.

Мы уже давно имеем дело с архиваторами типа ZIP и RAR, которые позволяют уменьшить объём файлов. Причина проста – экономия места на носителе, уменьшение трафика при передаче по сети.

Архиваторы могут ужать объём файла до 10 раз. Например, если это текст книги. Но некоторые файлы практически не сжимаются.

Почему некоторые файлы плохо сжимаются?

Всё зависит от типа хранимой информации. Представьте себе губку, смоченную водой. Если её сжать, то вода вытечет.

Текстовые файлы содержат очень много "воды": в них всего лишь ограниченный набор букв, которые очень часто повторяются. Учитывая все эти повторения, текст можно перекодировать так, чтобы создать из него словарь буквенных комбинаций. Каждая комбинация входит в словарь только один раз, и поэтому "вода" выжимается из текста. Теперь это не текст, а словарь и набор ссылок на словарные сочетания.

Но если вы попробуете сжать сухую губку, из неё ничего не вытечет. Воды нет, и выжимать нечего. Музыка, изображения, видео плохо поддаются сжатию, потому что в них гораздо больше разных сочетаний байтов и они редко повторяются.

Раньше, когда пространство для хранения было ограничено, а скорость интернета была невысокой, проблема упаковки мультимедиа-файлов стояла очень остро.

В результате появилась такая идея: если в губке нет воды, чтобы её выжать, давайте тогда отрежем кусок от самой губки и выбросим его. Так появилось сжатие с потерями.

Где применяется сжатие с потерями?

Потери – это реально потери. То есть информация, которая была в оригинале, теряется навсегда. Это значит, что сжатие с потерями нельзя использовать для большинства типов файлов, где важна сохранность данных. Нельзя сжать с потерями программу – после этого она перестанет работать. Нельзя сжать с потерями текст – он исказится.

Но мы можем без проблем слушать слегка искаженную музыку или смотреть слегка искаженные картинки. Именно поэтому сжатие с потерями используется в сфере мультимедиа.

Когнитивные потери

Во многих случаях сжатие с потерями эксплуатирует особенности человеческого восприятия.

Каждый звук в реальной жизни это сложный набор частот, которые звучат одновременно. При этом более громкая частота маскирует более тихие частоты, если они находятся поблизости от неё – будто накрывает их зонтиком.

Это так и называется маскировкой частот. Она происходит не на самом деле, а исключительно в нашем восприятии. Наш мозг так устроен.

Любой звук можно разложить на набор частот. Проанализировав этот набор, можно выбросить из него те частоты, которые будут маскироваться. Фактически для нас они неслышимы.

Так появился формат сжатия MP3 для звуковых файлов. Из звука выбрасываются некоторые составляющие его частоты.

Аналогичным образом эксплуатируется и наше восприятие изображений.

Изображение можно разделить на две составляющие: информация о яркости и информация о цвете. Информация о яркости гораздо важнее. Например, чёрно-белая фотография содержит только яркость, но при этом мы её прекрасно воспринимаем как реалистичную.

Цвет же мы различаем гораздо хуже. Поэтому было принято решение сохранять цветовую информацию не в каждой точке (или строке) изображения, а через одну. Иначе говоря, половина цветовой информации оказалась выброшена.

Современные цифровые матрицы фотокамер (за исключением Foveon и 3CCD) создают изображение сразу с потерями: оно содержит только 50% зеленого цвета и по 25% красного и синего.

Зелёного цвета в 2 раза больше, потому что именно он несёт большую часть яркостной информации, которая нам важнее.

После получения "мозаичной" картинки с цифрового сенсора она восстанавливается до нормальной, т.е. заполняются недостающие цветовые значения. Помните, что информация уже была потеряна, восстановление всего лишь "додумывает" её.

Но на этом потери не заканчиваются. Дальше вступают в дело алгоритмы сжатия.

Но сначала мы рассмотрим их общее место:

Преобразование Фурье

Фурье доказал, что кривую любой формы можно разложить на сумму обычных синусоид.

Времена архиваторов постепенно заканчиваются и с каждым годом, пользователи всё реже сжимают информацию.

Это не удивительно, когда были винчестеры, рассчитанные всего на несколько мегабайт, без сжатия даже обычных текстов, было не обойтись, но сегодня купить дополнительную память можно без особых затрат.

По привычке или из-за своих переживаний о лишнем занимаемом месте на диске, некоторые всё же продолжают сжимать данные, но это не всегда работает. Почему не сжимаются файлы архиватором? Дело в том, что некоторые данные вообще не имеет смысла пытаться сжимать, так как это невозможно.

Почему не сжимаются файлы архиватором?

Какие файлы не сжимаются архиваторами?


Начнем с того, что сжатию не поддаются данные, которые ранее уже проводились через архиватор. Программа полностью сократила возможный объем памяти, заменив все повторяющиеся данные, поэтому повторное архивирование не помогает.

Сработать такой метод может только в том случае, если второе сжатие производится с более свежего софта.

Что касается музыки и видео файлов, то их вообще можно не сжимать. Видеозаписи по умолчанию сжимаются кодеками-архиваторами, поэтому их добавление в архив не поможет сократить объем занимаемой памяти.

Аудиофайлы можно добавить в архив для сжатия, но максимум, что вам удастся «выкроить» это 5-7% памяти, согласитесь, из-за этого можно вообще не терять время на архивацию.

Графические элементы (картинки), также лучше не архивировать, а сжимать, путем редактирования. К примеру, вы можете изменить количество цветов, ведь не всегда требуется передача нескольких тысяч цветовых схем, иногда вполне достаточно 256 цветовой палитры.

Также, отлично экономит место уменьшение размера изображений и изменение формата. Всем известно, что PNG файлы занимают намного больше места, чем привычный формат Jpg.

Программы и различные базы данных можно попытаться сжать, но если вы получили их с официальных источников, то это вряд ли удастся. Дело в том, что они заранее оптимизируются, для ускоренного скачивания.

Но если архиваторы не так нужны сегодня, почему их разработчики продолжают выпускать обновления и даже продают программные продукты? Объяснить это не сложно, за счет архиваторов, можно удобно группировать данные, например, чтобы не передавать их через интернет по одному.

Также, путем архивации информации, можно увеличить её защиту, ведь даже в стандартном наборе WinRar есть функция для установки пароля.

В о времена, когда объемы жестких дисков представляли собой смешные значения, даже тексты книг в развернутом виде казались кощунственно огромными. В самом деле, представьте себе винчестер объемом в 40 Мб, где, к тому же, установлена Windows 3.1 (10 Мб) и WinWord 6 (20 Мб). Ничего удивительного не было в том, что это было золотое время архиваторов, когда десятки их пользователи знали не только по именам и возможностям, но даже по версиям, не говоря уже о десятках ключей, где приветствовалось «максимальное сжатие».

Грустно становится теперь, и не потому, что объемы дисков перевалили за терабайты, а то, что многие из нынешних данных пользователи по-прежнему пытаются сжимать архиваторами, совершенно не вдумываясь в рациональность и назначение этого процесса. И очень часто получается очень неуклюже.

Сжатие архиватором

Архиваторы, как и все программы, основанные на математических алгоритмах, не могут выйти за рамки некоторых законов, в том числе энтропии, и удаляют из файлов лишь повторяющуюся информацию. Именно поэтому сжать уже сжатый файл не получится – он даже может стать больше по размерам. Единственный случай, когда повторное сжатие может сработать – когда используется новейший архиватор, сжимающий архив, упакованный старинной версией программы. Но это, скорее исключение. Интересно было бы знать, на что не стоит тратить время, ведь многие из файлов имеют размеры в сотни мегабайт, а архивирование и распаковка – процесс нешуточно долгий даже для современных компьютеров.

Начнем с популярного: нет смысла упаковывать видео и музыку . В отношении видео надо знать, что оно уже не просто изначально упаковано мощными кодеками-архиваторами, но из него даже выброшены некоторые несущественные для просмотра данные. По аналогичной схеме, кстати, кодируются файлы JPEG, и потому они тоже не могут быть сжаты. Музыкальные файлы, хотя и сжаты, могут еще чуть-чуть «потесниться» на диске, но смысла городить огород ради 2-5% смысла не имеет. В отношении картинок нужно действовать по ситуации, но общий принцип таков – чем больше в них цветов, тем меньше шансов будет на сжатие. Вообще, картинки и фотографии – особенный случай, так как можно штатно резко снизить их характеристики, при этом не потеряв качества при просмотре на целевом устройстве вывода. Или вы в самом деле думаете, что сможете различить 4 миллиарда цветов? Скорее, хватит в 256 адаптированных цветов из палитры, а если уменьшить размер фото и разрешение, то легко сделать из 10-мегабайтной картинки 100-килобайтовую.

Программы и библиотеки сжимаются довольно слабо, учитывая то, что во многих случаях они изначально сжаты динамическими кодеками. Сжатие здесь играет множество ролей: защита информации, сжатие само по себе, запутывание хакеров от анализа и т.д. И, к тому же, программы обычно распространяются в сжатых дистрибутивах, так что отдельно их упаковывать нет смысла. Как следствие, и образы дисков с программами и играми. Экономьте время – свое и чужое…

Сжатие файлов позволяет быстрее передавать, получать и хранить большие файлы. Оно используется повсеместно и наверняка хорошая вам знакомо: самые популярные расширения сжатых файлов — ZIP, JPEG и MP3. В этой статье кратко рассмотрим основные виды сжатия файлов и принципы их работы.

Что такое сжатие?

Сжатие файла — это уменьшение его размера при сохранении исходных данных. В этом случае файл занимает меньше места на устройстве, что также облегчает его хранение и передачу через интернет или другим способом. Важно отметить, что сжатие не безгранично и обычно делится на два основных типа: с потерями и без потерь. Рассмотрим каждый из них по отдельности.

Сжатие с потерями

Такой способ уменьшает размер файла, удаляя ненужные биты информации. Чаще всего встречается в форматах изображений, видео и аудио, где нет необходимости в идеальном представлении исходного медиа. MP3 и JPEG — два популярных примера. Но сжатие с потерями не совсем подходит для файлов, где важна вся информация. Например, в текстовом файле или электронной таблице оно приведёт к искажённому выводу.

MP3 содержит не всю аудиоинформацию из оригинальной записи. Этот формат исключает некоторые звуки, которые люди не слышат. Вы заметите, что они пропали, только на профессиональном оборудовании с очень высоким качеством звука, поэтому для обычного использования удаление этой информации позволит уменьшить размер файла практически без недостатков.

3–5 декабря, Онлайн, Беcплатно

Аналогично файлы JPEG удаляют некритичные части изображений. Например, в изображении с голубым небом сжатие JPEG может изменить все пиксели на один или два оттенка синего вместо десятков.

Чем сильнее вы сжимаете файл, тем заметнее становится снижение качества. Вы, вероятно, замечали такое, слушая некачественную музыку в формате MP3, загруженную на YouTube. Например, сравните музыкальный трек высокого качества с сильно сжатой версией той же песни.

Сжатие с потерями подходит, когда файл содержит больше информации, чем нужно для ваших целей. Например, у вас есть огромный файл с исходным (RAW) изображением. Целесообразно сохранить это качество для печати изображения на большом баннере, но загружать исходный файл в Facebook будет бессмысленно. Картинка содержит множество данных, не заметных при просмотре в социальных сетях. Сжатие картинки в высококачественный JPEG исключает некоторую информацию, но изображение выглядит почти как оригинал.

При сохранении в формате с потерями, вы зачастую можете установить уровень качества. Например, у многих графических редакторов есть ползунок для выбора качества JPEG от 0 до 100. Экономия на уровне 90 или 80 процентов приводит к небольшому уменьшению размера файла с незначительной визуальной разницей. Но сохранение в плохом качестве или повторное сохранение одного и того же файла в формате с потерями ухудшит его.

Посмотрите на этот пример.

Оригинальное изображение, загруженное с Pixabay в формате JPEG. 874 КБ:

Оригинальная картинка без сжатия

Результат сохранения в формате JPEG с 50-процентным качеством. Выглядит не так уж плохо. Вы можете заметить артефакты по краям коробок только при увеличении. 310 КБ:

Картинка после сжатия с 50-процентным качеством

Исходное изображение, сохранённое в формате JPEG с 10-процентным качеством. Выглядит ужасно. 100 КБ:

Картинка после сжатия с 10-процентным качеством

Где используется сжатие с потерями

Как мы уже упоминали, сжатие с потерями отлично подходит для большинства медиафайлов. Это крайне важно для таких компаний как Spotify и Netflix, которые постоянно транслируют большие объёмы информации. Максимальное уменьшение размера файла при сохранении качества делает их работу более эффективной.

Сжатие без потерь

Сжатие без потерь позволяет уменьшить размер файла так, чтобы в дальнейшем можно было восстановить первоначальное качество. В отличие от сжатия с потерями, этот способ не удаляет никакую информацию. Рассмотрим простой пример. На картинке ниже стопка из 10 кирпичей: два синих, пять жёлтых и три красных.

Иллюстрация к сжатию файлов без потерь

Вместо того чтобы показывать все 10 блоков, мы можем удалить все кирпичи одного цвета, кроме одного. Используя цифры, чтобы показать, сколько кирпичей каждого цвета было, мы представляем те же данные используя гораздо меньше кирпичей — три вместо десяти.

Иллюстрация к сжатию файлов без потерь

Это простая иллюстрация того, как осуществить сжатие без потерь. Та же информация сохраняется более эффективным способом. Рассмотрим реальный файл: mmmmmuuuuuuuoooooooooooo. Его можно сжать до гораздо более короткой формы: m5u7o12. Это позволяет использовать 7 символов вместо 24 для представления одних и тех же данных.

Где используется сжатие без потерь

ZIP-файлы — популярный пример сжатия без потерь. Хранить информацию в виде ZIP-файлов более эффективно, при этом когда вы распаковываете архив, там присутствует вся оригинальная информация. Это актуально для исполняемых файлов, так как после сжатия с потерями распакованная версия будет повреждена и непригодна для использования.

Другие распространённые форматы без потерь — PNG для изображений и FLAC для аудио. Форматы видео без потерь встречаются редко, потому что они занимают много места.

Сжатие с потерями vs сжатие без потерь

Теперь, когда мы рассмотрели обе формы сжатия файлов, может возникнуть вопрос, когда и какую следует использовать. Здесь всё зависит от того, для чего вы используете файлы.

Скажем, вы только что откопали свою старую коллекцию компакт-дисков и хотите оцифровать её. Когда вы копируете свои компакт-диски, имеет смысл использовать формат FLAC, формат без потерь. Это позволяет получить мастер-копию на компьютере, которая обладает тем же качеством звука, что и оригинальный компакт-диск.

Позже вы, возможно, захотите загрузить музыку на телефон или старый MP3-плеер. Здесь не так важно, чтобы музыка была в идеальном качестве, поэтому вы можете конвертировать файлы FLAC в MP3. Это даст вам аудиофайл, который по-прежнему достаточно хорош для прослушивания, но не занимает много места на мобильном устройстве. Качество MP3, преобразованного из FLAC, будет таким же, как если бы вы создали сжатый MP3 с оригинального CD.

Тип данных, представленных в файле, также может определять, какой вид сжатия подходит больше. В PNG используется сжатие без потерь, поэтому его хорошо использовать для изображений, в которых много однотонного пространства. Например, для скриншотов. Но PNG занимает гораздо больше места, когда картинка состоит из смеси множества цветов, как в случае с фотографиями. В этом случае с точки зрения размера файлов лучше использовать JPEG.

Проблемы во время сжатия файлов

Бесполезно конвертировать формат с потерями в формат без потерь. Это пустая трата пространства. Скажем, у вас есть MP3-файл весом в 3 МБ. Преобразование его в FLAC может привести к увеличению размера до 30 МБ. Но эти 30 МБ содержат только те звуки, которые имел уже сжатый MP3. Качество звука от этого не улучшится, но объём станет больше.

Также стоит иметь в виду, что преобразовывая один формат с потерями в аналогичный, вы получаете дальнейшее снижение качества. Каждый раз, когда вы применяете сжатие с потерями, вы теряете больше деталей. Это становится всё более и более заметно, пока файл по существу не будет разрушен. Помните также, что форматы с потерями удаляют некоторые данные и их невозможно восстановить.

Заключение

Мы рассмотрели как сжатие файлов с потерями, так и без потерь, чтобы увидеть, как они работают. Теперь вы знаете, как можно уменьшить размер файла и как выбрать лучший способ для этого.

Алгоритмы, которые определяют, какие данные выбрасываются в методах с потерями и как лучше хранить избыточные данные при сжатии без потерь, намного сложнее, чем описано здесь. На эту тему можно почитать больше информации здесь, если вам интересно.

Читайте также: