node.js有哪些包可以进行图像裁剪?

时间:2010-12-27 19:47:05

标签: javascript node.js imagemagick

我正在使用node.js创建一个网站。我看到很多图书馆都提到了像imagemagick等等。这里有一个列表:https://github.com/ry/node/wiki/modules#graphics

我要做的是拍摄用户上传的图片,将其裁剪/调整到网站所需的特定尺寸。执行此操作的最佳/最活跃脚本是什么?我想要一个支持npm的人。有没有人有使用其中一些的实际经验?

4 个答案:

答案 0 :(得分:26)

想想我找到了一个可以很好地处理这个问题的图像恶魔包装器。甚至在将文件写入磁盘之前的内存中。 (又名用户上传 - >节点imagemagick lib - > cdn,从不接触磁盘......这就是我想要的)

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

答案 1 :(得分:19)

对于那些试图在Canvas和ImageMagick之间做出决定的人,我只是尝试了两者进行比较,而且我从imagemagick得到了更好的结果。这是一张经过调整大小并从1024x768到128x128裁剪的图像:

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

答案 2 :(得分:6)

如果你需要能够在你的图像上绘制或做效果,你可能仍需要画布或ImageMagick,但就速度和内存使用而言,还有一些更好的选择。

以下是几个不同图像库的基准。

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

ImageMagick很慢并消耗大量内存。

尝试使用sharp library使用的Vips。

答案 3 :(得分:4)

我使用了LearnBoost人员中的node-canvas - https://github.com/learnboost/node-canvasnpm install canvas - 他们对问题非常敏感,并且库编写得很好且稳定。我不认为你可以从内存中创建一个图像,但是如果node-imagemagick不适合你,那么值得一试。

如果您熟悉浏览器端画布API,则应该直接从文件创建图像并将其绘制到较小的画布中。这里有一个例子:

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

如果您熟悉C ++,那么将方法添加到本机对象相当容易,第一次在Mac OS上为我构建的项目非常干净。 cairo的文档,即为node-canvas提供支持的图形库,也非常清楚。我将看一下Image对象的加载函数,看看是否有从节点缓冲区加载的方法:

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

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

祝你好运!