何故作ろうと思ったのか?
pure JS な PNG エンコーダを作成する際、ライセンスがクリアな Deflate 実装が見つけられなかった為。
出来ること
- Zlib (RFC1950) 圧縮
- 圧縮方法として Deflate (RFC1951) の以下のブロックに対応
- 非圧縮
- 固定ハフマン符号
- 動的ハフマン符号(カスタムハフマンテーブル)
- 圧縮方法として Deflate (RFC1951) の以下のブロックに対応
ライセンス
MIT License
使用方法
Zlib.Deflate.compress(data[, opt_params]);
data
: byte array もしくは stringopt_params
:{ compressionType: Zlib.Deflate.CompressionType.(NONE|FIXED|DYNAMIC) }
戻り値は Array (byte array)
デモ(jsdo.it)
Zlib Deflate 動作デモ - jsdo.it - share JavaScript, HTML5 and CSS
ダウンロード
GitHub のリポジトリからどうぞ。ただし、PNGエンコーダの一部となっていますので、個別で利用される方は最新版を minified したものを利用すると良いです。
問題点
lazy match 非対応なため、他のライブラリの高圧縮率設定と比べると若干圧縮性能が落ちるかも知れません。
謝辞
本ライブラリを作成するにあたって、id: n7shi さんの資料が大変参考になりました。ありがとうございました。