我正在使用node.js创建一个网站。我看到很多图书馆都提到了像imagemagick等等。这里有一个列表:https://github.com/ry/node/wiki/modules#graphics
我要做的是拍摄用户上传的图片,将其裁剪/调整到网站所需的特定尺寸。执行此操作的最佳/最活跃脚本是什么?我想要一个支持npm的人。有没有人有使用其中一些的实际经验?
答案 0 :(得分:26)
想想我找到了一个可以很好地处理这个问题的图像恶魔包装器。甚至在将文件写入磁盘之前的内存中。 (又名用户上传 - >节点imagemagick lib - > cdn,从不接触磁盘......这就是我想要的)
答案 1 :(得分:19)
对于那些试图在Canvas和ImageMagick之间做出决定的人,我只是尝试了两者进行比较,而且我从imagemagick得到了更好的结果。这是一张经过调整大小并从1024x768到128x128裁剪的图像:
答案 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-canvas或npm 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
祝你好运!