Используется ли DEFLATE в сжатии gzip и png одинаково?
Я читал о gzip-сжатии и png-сжатии изображений, и они оба используют алгоритм DEFLATE, но я не уверен, что реализация этого алгоритма одинакова. Кроме того, если это тот же алгоритм, то в чем разница между этими компрессиями, кроме того факта, что png-сжатие использует дельта-фильтрацию перед DEFLATE?
2 ответа
DEFLATE - это сжатый формат данных, а не алгоритм. И gzip, и PNG используют исключительно формат сжатых данных deflate с различными обертками вокруг этих сжатых данных. Оба могут иметь несколько потоков дефляции.
gzip - это утилита командной строки с реализацией DEFLATE-совместимого компрессора. Через некоторое время после того, как был написан gzip, тот же человек, который написал этот компрессор, Жан-Луп Гэйли, адаптировал этот код для zlib, библиотеки сжатия общего назначения. zlib был написан специально для того, чтобы можно было использовать формат PNG для изображений. Большинство компрессоров PNG используют zlib.
Поскольку код сжатия zlib был адаптирован из gzip, реализация очень похожа, но не совсем одинакова. Если вы сжимаете те же данные с помощью кода сжатия в gzip и zlib, вы, как правило, получаете разные результаты, за исключением короткого ввода. Произошли изменения в том, как компрессор решает испускать блок сдувания, и в параметрах настройки алгоритма.
Короткий ответ - да, они используют один и тот же алгоритм дефляции. Смотрите первый ответ в этой ссылке для кровавых подробностей. Ниже выписка
Библиотека zlib предоставляет код сжатия и распаковки Deflate для использования zip, gzip, png (который использует оболочку zlib для данных deflate) и многими другими приложениями.