web-dev-qa-db-ja.com

Node.JSでサーバー側の画像操作に使用するライブラリはどれですか?

Node.JS wikiでかなり 利用可能なライブラリの大きなリスト を見つけましたが、どれがより成熟していて、より良いパフォーマンスを提供しているかはわかりません。基本的に私は次のことをしたいです:

  1. 外部ソースからサーバーに画像をロードする
  2. それらを1つの大きなキャンバスに置きます
  3. それらを少し切り取り、マスクします
  4. フィルターを1つまたは2つ適用する
  5. 最終画像のサイズを変更し、それにリンクを与えます

ノードパッケージがLinuxとWindowsの両方で機能する場合は大きなプラスです。

自分の質問に答える

Node.jsグラフィックライブラリを掘り下げて2日間過ごしました。

node-canvas

  • <canvas> AP​​Iに精通しているため、最初に試しました。それは図書館にとって大きなプラスです。
  • windowsを簡単にダウンロードできないCairoが必要です。しかし、GTK +ディストリビューションで見つけました。
  • さらに、モジュールのインストール時にネイティブライブラリバインディングコードをコンパイルする必要があります。 Windowsにまだ移植されていないNode-Wafを使用します。

gm

  • 成熟した
  • windowsでスムーズに実行されます
  • ドキュメントはokですが、完全ではありません:どのAPIが利用可能かを把握するためにソースコードを調べる必要がありました
  • 残念ながら、画像をgmと組み合わせる簡単な方法はありません。たぶんそれを達成するための何らかの方法があるかもしれませんが、私はそれで2時間を費やしてから1つを見つけていません。

node-imagemagick

  • 公式リポジトリには、カバーされている基本的なImageMagickコマンドがほとんどありませんが、私は this fork (NPMがgitリポジトリからライブラリを直接プルできる良いこと)を使用しました。 montageのバインディングがあり、まさに必要なことを行います。
  • ImageMagickは非常に遅い 、ただしWindows上で動作します。

Node-Vips

  • 巨大なプラス:信じられないほどの VIPSライブラリ を使用しています。 VIPSは非常に高速で、大きな画像用に最適化されています。ハードウェアリソースを利用することは非常に賢明です。マシンにRAMがたくさんある場合、メモリですべての処理を行いますが、メモリが不足している場合や他のアプリケーションに必要な場合はハードドライブキャッシュに切り替えます。
  • node-canvasと同じようにNode-Wafが必要なので、Windowsではまだ利用できません。

リストから他のライブラリも調べましたが、それらのほとんどは非常に未熟であるか、私のユースケースに適合していません。 Node-WafがWindowsに移植されたときにNode-CanvasまたはNode-Vipsに移行してみたいと思いますが、それまではnode-imagemagickに固執します。

GraphicsMagickで gm を確認することを強くお勧めします。安定した、豊富な機能、クリーンなAPI、優れたドキュメント、高速。

そして、WindowsとLinux/MacOS/BSD /の両方で動作します...

6
Pierre

彼女は link GDI +に基づくキャンバス実装です

3
pastorgluk