Zopfli
データ圧縮ソフトウェア
From Wikipedia, the free encyclopedia
Zopfliは、Deflate・gzip・zlib形式でのデータ圧縮を行うソフトウェアである[2]。他のDeflate・zlibの実装よりも高い圧縮率となるが、圧縮時により多くの時間が必要となる[3]。2013年2月にGoogleよってライブラリとしてApache 2.0の下で自由ソフトウェアとしてリリースされた[4]。"Zöpfli"という名前は甘くない種類のヘーフェツォプフであるツオップに、スイスドイツ語の指小辞である"li"を付けたものである。
|
| |
| 初版 | 2013年2月 |
|---|---|
| 最新版 |
1.0.3
/ 2019年11月27日[1] |
| リポジトリ | |
| プログラミング 言語 | C言語 |
| 対応OS | クロスプラットフォーム |
| 種別 | データ圧縮 |
| ライセンス | Apache 2.0 |
| 公式サイト |
github |
特性と用例
Zopfliは生のDeflateデータストリームか、gzipかzlib形式でカプセルされたDeflateデータを出力することができる。デフォルトでは15回処理が繰り返されるが、これを変更することで処理時間と圧縮率のどちらを優先するかを選ぶことができる。
デフォルトの設定ではZopfliの出力はzlibの最大圧縮のものより一般的に3 - 8%小さくなるが、圧縮処理には80倍の時間が必要となる[3][4]。伸長速度はzlibの出力と殆ど同じである。
Zopfliの圧縮速度は非常に遅いのでオンザフライ圧縮にはあまり適しておらず、一般的に静的なコンテンツを1回だけ圧縮するのに使用されている[5][6]。これは一般的にDeflateベースのHTTP圧縮で配信されるウェブコンテンツか、PNGやWOFFなどのDeflateベースのファイルフォーマットのウェブコンテンツに当てはまる。別の使用例はAPKやJARなどのZIPベースのソフトウェアパッケージを使用したソフトウェアのアップデートやダウンロードをする場合である。これは特にモバイル通信で当てはまる。
技術
Zopfliの高い圧縮率はより徹底して圧縮処理を行うことによって達成されている。この方法はエントロピーモデルの反復と最短経路アルゴリズムを繰り返し使用し、全ての可能なDeflate表現のグラフからビットコストの低いパスを見つけるものである[7]。
実装
歴史
PNGの最適化
PNGはDeflateを使用するので、Zopfliを使用して圧縮することができる。Zopfliの作者によるZopfliPNGというPNG最適化ツールがある。ZopfliアルゴリズムはAdvanceCOMPのadvpngような他のPNG最適化ツールにも統合されている[11]。