我应该使用哪个库进行Node.JS上的服务器端image processing?
我在Node.JS wiki上发现了一大堆可用的库 ,但我不确定哪些库更成熟,性能更好。 基本上我想要做到以下几点:
- 从外部来源加载一些图像到服务器
- 把它们放在一个大的canvas上
- 裁剪和掩盖他们一点
- 应用一个或两个filter
- 调整最终的图像,并给它一个链接
如果节点包可以在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实现的链接