何故作ろうと思ったのか?

pure JS な PNG エンコーダを作成する際、ライセンスがクリアな Deflate 実装が見つけられなかった為。

出来ること

  • Zlib (RFC1950) 圧縮
    • 圧縮方法として Deflate (RFC1951) の以下のブロックに対応
      • 非圧縮
      • 固定ハフマン符号
      • 動的ハフマン符号(カスタムハフマンテーブル)

ライセンス

MIT License

使用方法

 Zlib.Deflate.compress(data[, opt_params]);
  • data: byte array もしくは string
  • opt_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 さんの資料が大変参考になりました。ありがとうございました。