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

And*_*кин 116 javascript image-manipulation image image-processing node.js

我在Node.JS wiki上找到了一个相当大的可用库列表,但我不确定哪些更成熟并提供更好的性能.基本上我想做以下事情:

  1. 从外部源将一些图像加载到服务器
  2. 把它们放在一块大帆布上
  3. 裁剪并掩盖它们
  4. 应用一两个过滤器
  5. 调整最终图像的大小并给出一个链接

如果节点包在Linux 和Windows上都能正常工作,那就太大了.

And*_*кин 181

回答我自己的问题

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

节点帆布

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

  • 成熟
  • 在Windows上顺利运行
  • 文档是好的,但不彻底:我不得不寻找到源代码,以弄清楚什么API可用
  • 遗憾的是,没有简单的方法将图像与gm结合起来.也许有一些方法可以实现这一点,但我没有找到一个两小时用它.

节点的ImageMagick

  • 官方的repo很少有基本的ImageMagick命令,但是我使用了这个分支(NPM可以直接从git存储库中提取库).它有绑定,montage正是我所需要的.
  • ImageMagick很慢,虽然它可以在Windows上运行.

节点VIPS

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

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

  • 感谢您回来回答您自己的问题.好极了! (43认同)
  • 时间改变,NODE-Vips有1年+没有更新.我建议将**Sharp**添加到列表中.它也使用VIPS并且被激活维护:https://github.com/lovell/sharp (11认同)
  • 对于那些现在踩到这个问题的人来说,[LWIP](https://github.com/EyalAr/lwip)是另一个不错的选择.没有外部依赖,它依赖于node.js C++插件. (5认同)
  • https://github.com/lovell/sharp 是 libvips 的另一个节点绑定,现在可以在 Windows 上运行。 (2认同)

Pie*_*rre 6

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

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