JS製の画像差分比較ライブラリ

見つけ次第、追記していく予定です。

resemblejs

https://www.npmjs.com/package/resemblejs

ブラウザ上とNode.js上で実行が可能。ただし、Node.js上で実行するために、node-canvas(https://www.npmjs.com/package/canvas)が必要になる。オプション(optionalDeps)なのでインストール時は --no-optional (npm) のフラグをつけること。

このnode-canvas(https://www.npmjs.com/package/canvas)は、実行環境にcairo(https://www.cairographics.org/)が導入済みである必要がある。詳細はリポジトリのREADME.mdに書いてあるので、使う際は予め目を通しておくこと。

Node.jsで実行する際にcairoが必要になる点が玉に瑕か。。実行するマシンにインストールしてしまえば良いだけだが面倒なことに変わりはない。

node-resemble-js

https://www.npmjs.com/package/node-resemble-js

前述したresemblejsをフォークしたライブラリ。

Node.js上で実行するにあたって、node-canvas に依存しない作りになっている。つまり、実行環境にcairo(https://www.cairographics.org/)が導入されていなくても良い。

これはpngjs(https://www.npmjs.com/package/pngjs)jpeg-js(https://www.npmjs.com/package/jpeg-js) を用いている。

しばらくメンテナンスがされていないのが気になる。

blink-diff

https://www.npmjs.com/package/blink-diff

JSだけでなくコマンドも提供されており、CLIで実行できる。

Yahoo!が開発したライブラリ。リポジトリを見る限りアーカイブされており、メンテナンスはされないのかな。。。

pngjs-image(https://www.npmjs.com/package/pngjs-image)を用いているが、これはpngjs(https://www.npmjs.com/package/pngjs)が依存関係にある。

将来的にメンテナンスされていくのかは不明だが、望み薄かな。

pixelmatch

https://www.npmjs.com/package/resemblejs

ブラウザ上、Node.js上で動作する。環境依存しないシンプルなAPIが特徴。Mapboxが開発しているライブラリ。

pngjs(https://www.npmjs.com/package/pngjs)が依存関係にある。

個人的に環境依存しない点やAPIがわかりやすい点は好印象。

matches-subimage

https://www.npmjs.com/package/matches-subimage

pixelmatchの後発ライブラリ。軽量でzero-dependenciesでシンプル。

zero-dependenciesではあるが、Node.js上での画像の取り扱いは他のパッケージでも利用されているようにpngjs(https://www.npmjs.com/package/pngjs)を使う感じにはなると思う。

Jimp

https://www.npmjs.com/package/jimp

このライブラリは画像差分に特化したものではなく、回転、リサイズなどの画像処理ができる。

画像差分時の細かいオプションはないものの、扱いやすい。