Оригинальный автор(ы) | Лоде Вандевенн и Юрки Алакуйала |
---|---|
Разработчик(и) | |
Первоначальный выпуск | Февраль 2013 г. ( 2013-02 ) |
Стабильный релиз | 1.0.3 [1] / 27 ноября 2019 г. ( 27 ноября 2019 ) |
Репозиторий |
|
Написано в | С |
Тип | Сжатие данных |
Лицензия | Лицензия Apache 2.0 |
Веб-сайт | github.com/google/zopfli |
Zopfli — это библиотека сжатия данных , которая выполняет кодирование данных Deflate , gzip и zlib . [2] Она обеспечивает более высокую степень сжатия, чем основные реализации Deflate и zlib, но за счет более медленной работы. [3] Google впервые выпустила Zopfli в феврале 2013 года на условиях Apache License 2.0 . [4]
Название Zöpfli — это швейцарско-немецкое уменьшительное от « Zopf », несладкий вариант Hefezopf . [5]
Zopfli может либо генерировать необработанный поток данных Deflate, либо инкапсулировать его в форматы gzip или zlib. Zopfli достигает более высокой плотности данных за счет более исчерпывающих методов сжатия. Метод основан на итеративном моделировании энтропии и алгоритме поиска кратчайшего пути для нахождения пути с низкой стоимостью битов через граф всех возможных представлений Deflate несжатых данных. [6] По умолчанию Zopfli выполняет 15 итераций, но может быть настроен на выполнение большего или меньшего количества. При настройках по умолчанию вывод Zopfli обычно на 3–8% меньше максимального сжатия zlib, но занимает примерно в 80 раз больше времени. [4] [3]
Из-за своей значительно более низкой скорости сжатия Zopfli не подходит для сжатия на лету. Обычно он используется для однократного сжатия статического контента. [7] [8] Это обычно справедливо для веб- контента, который обслуживается сжатием HTTP на основе Deflate или веб-контента в формате файла на основе Deflate, таком как файлы шрифтов PNG или WOFF . [9] Другой вариант использования — обновления программного обеспечения или загрузки с файлами пакетов программного обеспечения, имеющими формат на основе zip , такими как пакеты приложений Android (APK) или архивы Java (JAR), особенно через мобильные соединения. [10]
Zopfli основан на алгоритме Юрки Алакуйалы. [11] Первая эталонная реализация Zopfli, созданная Юрки Алакуйалой и Лоде Вандевенне, появилась в феврале 2013 года. Версия 1.0.0 была выпущена 25 апреля 2013 года. [12] Эталонная реализация представляет собой программную библиотеку в соответствии с условиями Apache License 2.0 , написанную на языке C. [2 ]
С тех пор сообщество разработчиков открытого исходного кода предприняло попытки модифицировать Zopfli для оптимизации файлов Portable Network Graphics (PNG), поскольку PNG использует слой сжатия Deflate. Результатом этих изменений стал ZopfliPNG, который был принят в репозиторий Zopfli Google в мае 2013 года. [13] Алгоритм Zopfli также был интегрирован в другие инструменты оптимизации сжатия PNG, такие как advpng (из набора утилит AdvanceCOMP) [14] и OxiPNG. [15]