1. ホーム
  2. javascript

[解決済み] Node.JSでサーバーサイドの画像処理を行うにはどのライブラリを使用すればよいですか?[クローズド]

2022-09-02 08:02:54

質問

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

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

nodeパッケージがLinuxとWindowsの両方で動作するのは大きなプラスです。 と Windows .

どのように解決するのですか?

自分自身の質問に答える

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

ノードキャンバス

  • にはかなり慣れているので、まず試してみました。 <canvas> API を使っています。ライブラリとして大きなプラスになりますね。
  • は Cairo を必要とし、それは簡単な Windows ダウンロードを持っていません。GTK+ のディストリビューションで見つけたけど。
  • さらに、モジュールのインストール時にネイティブライブラリのバインディングコードをコンパイルする必要があります。これは、まだ Windows に移植されていない Node-Waf を使用します。

gm

  • 成熟
  • Windows でスムーズに動作する
  • ドキュメントは ok しかし、完全ではありません。どのAPIが利用可能かを把握するために、ソースコードを調べなければなりませんでした。
  • 残念ながら、gmで画像を結合する簡単な方法はありません。多分、それを実現する方法があるのでしょうが、2時間費やしても見つかりませんでした。

node-imagemagick

  • 公式レポではImageMagickの基本的なコマンドはほとんど網羅されていませんが、私が使ったのは このフォーク を使いました (NPM は git リポジトリから直接ライブラリを引っ張ってこれるのが良いところです)。このフォークには montage これはまさに私が必要としているものです。
  • ImageMagickはかなり遅いです Windows で動作しますが。

ノードヴァイプス

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

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