我应该使用哪个库进行Node.JS上的服务器端image processing?

我在Node.JS wiki上发现了一大堆可用的库 ,但我不确定哪些库更成熟,性能更好。 基本上我想要做到以下几点:

  1. 从外部来源加载一些图像到服务器
  2. 把它们放在一个大的canvas上
  3. 裁剪和掩盖他们一点
  4. 应用一个或两个filter
  5. 调整最终的图像,并给它一个链接

如果节点包可以在Linux 和Windows上运行,那么还有一个好处

回答我自己的问题

我花了两天时间挖掘Node.jsgraphics库。

节点帆布

  • 我先试了一下,因为我对<canvas> API非常熟悉。 这对图书馆来说是一个巨大的优势。
  • 它需要开罗,没有一个简单的Windows下载。 我发现它在GTK +发行虽然。
  • 而且它需要在模块安装时编译本地库绑定代码。 它使用Node-Waf尚未被移植到Windows。

  • 成熟
  • 顺利地在Windows上运行
  • 文档是好的,但不是彻底的:我不得不查看源代码来找出可用的API
  • 不幸的是,没有简单的方法将图像与gm结合。 也许有一些办法可以达到这个目的,但我还没有find一个花了两个小时。

节点的ImageMagick

  • 官方的回购有很less的基本ImageMagick命令覆盖,但我用这个叉 (好处是NPM可以直接从git仓库拉库)。 它有montage绑定,正是我所需要的。
  • ImageMagick是相当慢 ,虽然它在Windows上工作。

节点VIPS

  • 巨大的优点:它使用了我熟悉的令人难以置信的VIPS库 。 VIPS非常快速,针对大图像进行了优化。 利用硬件资源是非常聪明的:如果你的机器有很多RAM,它将在内存中进行所有的处理,但是如果内存不足或者其他应用程序需要,它将切换到硬盘驱动器的高速caching。
  • 与node-canvas相同,它需要Node-Waf,因此现在可以在Windows上使用。

我也从列表中查看了其他图书馆,但其中大部分都不成熟或不适合我的用例。 当Node-Waf被移植到Windows时,我真的很想尝试迁移到Node-Canvas或Node-Vips,但在那之前我会坚持node-imagemagick。

我强烈build议你用GraphicsMagick检查gm 。 稳定,function丰富,干净的API,伟大的文档,和快速。

它可以在Windows和Linux / MacOS / BSD / …上运行

她是基于GDI +的canvas实现的链接