По какой-то причине вы можете уместить в изображение 2 миллиона пикселей, не используя 1,97 мегабайта пространства. Я нашел симпатичные обои с разрешением 1080p (около 2 миллионов пикселей) и загрузил их. Проверяя свойства, я заметил кое-что странное: на моем жестком диске он занимал всего 230 КБ. Почему это? Для того, кто не совсем разбирается в сжатии изображений, это кажется волшебством. Но как только вы познакомитесь с предметом, вы поймете, что некоторые изображения больше других, несмотря на количество пикселей, которые они занимают на вашем экране. Времени мало, поэтому давайте быстро углубимся в основные принципы сжатия изображений.
Методы, подходы, алгоритмы в изобилии.
Наивно думать, что существует только один способ сжатия изображения. Существуют разные методы, каждый из которых имеет уникальный подход к общей проблеме, и каждый подход используется в разных алгоритмах для достижения одного и того же вывода. Каждый алгоритм представлен форматом файла (PNG, JPG, GIF и т. д.). А сейчас мы поговорим о методах, которые обы
Contents
Методы, подходы, алгоритмы в изобилии.
сним, почему некоторые из них занимают гораздо меньше места.Сжатие без потерь
Когда вы думаете о слове «без потерь» в контексте сжатия изображений, вы, вероятно, думаете о методе, который изо всех сил старается сохранить качество, сохраняя при этом относительно небольшой размер изображения. Это очень близко к истине. В качестве методасжатие без потерь максимально сводит к минимуму искажения, сохраняя четкость изображения. Для этого он строит индекс всех пикселей и группирует пиксели одного цвета вместе. Это похоже на сжатие файлов, только мы имеем дело с меньшими объемами данных.
DEFLATE — один из наиболее распространенных алгоритмов для такого рода задач. Он основан на двух других алгоритмах (Хаффмана и LZ77, если вы книжный червь) и имеет очень проверенный способ группировки данных, найденных в изображениях. Вместо того, чтобы просто перебирать данные по всей длине и сохранять несколько экземпляров пикселя одного и того же
Сжатие без потерь
х (так называемое кодирование длины серии), он захватывает повторяющиеся строки, найденные во всем коде, и устанавливает «указатель». за каждый найденный дубликат. Везде, где часто используется определенная строка данных (пикселей), она заменяет все эти пиксели взвешенным символом, который еще больше сжимает все.Обратите внимание, что при кодировании серий и DEFLATE ни один из пикселей фактически не съедается и не меняет цвет. Использование этого метода позволяет получить изображение, идентичное исходному оригиналу. Единственная разница между ними заключается в том, сколько места на самом деле занято на вашем жестком диске!
Сжатие с потерями
Как следует из названия, сжатие с потерями приводит к потере части содержимого изображения. Если зайти слишком далеко, изображение может стать неузнаваемым. Но с потерямине означает, что вы удаляете пиксели. На самом деле для сжатия изображений таким способом обычно используются два алгоритма: кодирование с преобразованием и подвыборка цветности. Первое чаще встречается в изображениях, а второе в видео.
При кодировании с преобразованием цвета изображения усредняются с использованием специальной математической формулы, называемой дискретным косинусным преобразованием. Изображение теряет цвет и может привести к появлению артефактов (странная пикселизация в случайных точках изображения) при чрезмерном использовании. Этот конкретный алгоритм компенсирует свою неуклюжесть большим преимуществом: вы можете только указать, какоекачество вы хотите сохранить в изображении. При сжатии без потерь наиболее близким к целостному управлению качеством является установка количества цветов, которое должно иметь каждое изображение.
Подвыборка цветности использует другой подход. Вместо усреднения небольших блоков цвета, что также может повлиять на яркость изображения, он старается поддерживать одинаковую яркость во всех областях. Это обманывает ваши глаза, заставляя их не замечать снижения качества. На самом деле он отлично подходит для сжатия анимации, поэтому его чаще используют в видеопотоках. Это не значит, что изображения также не используют этот алгоритм.
Но подождите, это еще не все! Google также попробовал новый алгоритм с потерями, известный как WebP. Вместо усреднения информации о цвете он предсказывает цвет пикселя, просматривая окружающие его фрагменты. Данные, которые фактически записываются в полученное сжатое изображение, представляют собой разницу между предсказанным цветом и фактическим цветом. В конце концов, многие прогнозы окажутся точными, что приведет к нулю. И вместо того, чтобы печатать целую кучу нулей, он просто сжимает их все в один символ, который их представляет. По данным Google, точность изображения и сжатие Сжатие с потерями3/google-webp-youtube-thumbnails/?ncid=rss_truncated" target="_blank" rel="noopener" title="уменьшает размер изображения в среднем на 25 процентов">уменьшает размер изображения в среднем на 25 процентов повышены по сравнению с другими алгоритмами с потерями.
Пришло время вопросов и обсуждений!
Если вы новичок в мире файлов изображений, эта информация, вероятно, покажется вам немного запутанной. Если у вас есть вопрос, задайте его в комментариях, и мы постараемся на него ответить. В противном случае вы можете обсудить это!