web-dev-qa-db-ja.com

node.jsがイメージのトリミングを行うために使用できるパッケージは何ですか?

Node.jsを使用してウェブサイトを作成しています。 imagemagickなどの上に便乗していると言及されている多くのライブラリーを見てきました。ここにリストがあります: https://github.com/ry/node/wiki/modules#graphics

私がやろうとしていることは、ユーザーがアップロードした画像を取得し、サイトが必要とする特定のサイズにトリミング/サイズ変更することです。これを行うのに最適/最もアクティブなスクリプトは何ですか? npmをサポートしたいのですが。これらのいくつかを実際に使用した経験のある人はいますか?

33
Travis

これをかなりうまく処理できるきちんとしたimagemagickラッパーを見つけたと思います。ファイルをディスクに書き込む前のメモリ内でも。 (別名ユーザーアップロード->ノードimagemagick lib-> cdn、ディスクに触れないでください...これは私が望んでいることです)

https://github.com/rsms/node-imagemagick

26
Travis

CanvasとImageMagickのどちらかを決定しようとしている人のために、比較のために両方を試したところ、imagemagickからはるかに優れた結果が得られました。これは、1024x768から128x128にサイズ変更およびトリミングされた画像です。

http://i.imgur.com/tfeft.png

19
sak

画像に描画したり効果を加えたりする必要がある場合は、キャンバスまたはImageMagickが必要になるかもしれませんが、速度とメモリ使用量の点で、いくつかの優れたオプションがあります。

以下は、いくつかの異なる画像ライブラリのベンチマークです。

https://github.com/libvips/libvips/wiki/Speed-and-memory-use

ImageMagickは低速で、大量のメモリを消費します。

シャープライブラリ で使用されるVipsを試してください。

6
Tyler Larson

LearnBoostの人からのノードキャンバスを使用しました- https://github.com/learnboost/node-canvas またはnpm install canvas-彼らは問題に非常に敏感であり、ライブラリはよく書かれていて安定しています。メモリからイメージを作成できるとはまだ思っていませんが、node-imagemagickが機能しない場合は、試してみる価値があります。

ブラウザー側のキャンバスAPIに慣れている場合は、ファイルから画像を作成し、それを小さなキャンバスに描画するのは簡単です。ここにその例があります:

https://github.com/LearnBoost/node-canvas/blob/master/examples/resize.js

C++に精通している場合は、ネイティブオブジェクトにメソッドを追加するのはかなり簡単です。このプロジェクトは、Mac OSで初めてきれいにビルドされました。 node-canvasを強化するグラフィックライブラリであるcairoのドキュメントも非常に明確です。 Imageオブジェクトのロード関数を見て、Nodeバッファーからロードする方法があるかどうかを確認します。

https://github.com/LearnBoost/node-canvas/blob/master/src/Image.h

https://github.com/LearnBoost/node-canvas/blob/master/src/Image.cc

幸運を!

4
RandomEtc