我应该在Node.JS上使用哪个库进行服务器端图像处理?

时间:2012-05-21 20:23:38

标签: javascript image node.js image-processing image-manipulation

我在Node.JS维基上发现了一个非常large list of available libraries,但我不确定哪些更成熟并提供更好的性能。基本上我想做以下事情:

  1. 从外部来源将一些图像加载到服务器
  2. 将它们放在一个大画布上
  3. 裁剪并掩饰它们
  4. 应用一两个过滤器
  5. 调整最终图片的大小并给出一个链接
  6. 如果节点包同时适用于Linux 和Windows ,那么<+>。

3 个答案:

答案 0 :(得分:180)

回答我自己的问题

我花了两天时间挖掘Node.js图形库。

node-canvas

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

gm

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

node-imagemagick

  • 官方回购包含的基本ImageMagick命令很少,但我使用this fork(NPM可以直接从git存储库中提取库)。它具有montage的绑定,完全符合我的需要。
  • ImageMagick is quite slow,虽然它适用于Windows。

Node-Vips

  • 巨大的加号:它使用了我熟悉的令人难以置信的VIPS library。 VIPS非常快速并针对大图像进行了优化。使用硬件资源非常聪明:如果您的计算机有大量RAM,它将在内存中进行所有处理,但如果内存不足或其他应用程序需要,则会切换到硬盘驱动器缓存。
  • 与node-canvas相同,它需要Node-Waf,因此它尚不适用于Windows。

我还查看了列表中的其他库,但是大多数库都非常不成熟或者不适合我的用例。当Node-Waf移植到Windows时,我真的想尝试迁移到Node-Canvas或Node-Vips,但在那之前我会坚持使用node-imagemagick。

答案 1 :(得分:6)

我强烈建议您使用GraphicsMagick检查gm。 稳定,功能丰富,干净的API,出色的文档和快速。

它适用于Windows和Linux / MacOS / BSD / ......

答案 2 :(得分:3)

她是基于GDI +的link画布实现