PNG: deflate и zlib


Я пытаюсь понять сжатие в PNG - но мне кажется, что

Найти много противоречивой информации в интернете ... Я хотел бы понять ... - как осуществляется поиск в LZ77-part: хэш-таблице со связанными списками? это определяется в deflate? или реализовано в zlib? есть ли выбор метода поиска? - могут ли PNG-кодеры / декодеры устанавливать некоторые параметры для сжатия (стратегия, фильтр и т. д.) или есть значение по умолчанию для PNG? - делает ли LZ77-часть жадную или ленивую оценку? или это тоже вариант? - и наконец: 2 дерева Хаффмана, они сжаты в третьем дереве, и все три из них закодированы? или 2 дерева кодируются только их кодовыми длинами?

Отличается ли реализация zlib от других реализаций deflate?? Может быть, отсюда и все мое смятение?

Спасибо за любую помощь!! Мне это нужно для моей новой работы

LuCu

1 3

1 ответ:

Сжатие PNG осуществляется в формате zlib. Формат zlib используетdeflate . Обычно используется код библиотекиzlib .

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

Формат deflate определяет сжатие Хаффмана коды на передней панели динамических блоков. Литеральные / длина и длина кода расстояния кодовые длины являются длиной выполнения и кодируются Хаффманом сами по себе.

Есть и другие реализации дефляционных компрессоров в LZMA SDK и Google zopfli, где оба из них используют более интенсивные подходы, которые требуют больше времени для небольших выигрышей в сжатии.