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


117

我在Node.JS Wiki上找到了大量可用的库,但是我不确定哪个更成熟并提供更好的性能。基本上,我想执行以下操作:

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

如果节点程序包可在Linux 和Windows上同时使用,则是一大优势。


问题已经回答了这里:stackoverflow.com/questions/4541332/...
DjebbZ

2
2015年:这似乎也合法:github.com/oliver-moran/jimp
jmunsch 2016年

@jm_____ stackoverflow既是一个问答集,也是一个维基。不想编辑答案,以便更多的人注意到它。
安德鲁АндрейЛисточкин16年

Answers:


184

回答我自己的问题

我花了两天时间浏览Node.js图形库。

节点画布

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

gm

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

节点图像魔术

  • 官方仓库几乎没有介绍基本的ImageMagick命令,但是我使用了这个fork(NPM可以直接从git仓库中提取库的好处)。它具有montage确实满足我需要的绑定。
  • 尽管ImageMagick可以在Windows上运行,但它的运行速度相当慢

节点威

  • 巨大的优点:它使用了我熟悉的不可思议的VIPS库。VIPS非常快,并且针对大图像进行了优化。利用硬件资源非常聪明:如果您的计算机有很多RAM,它将在内存中进行所有处理,但是如果内存不足或其他应用程序需要时,它将切换到硬盘驱动器缓存。
  • 与node-canvas相同,它需要Node-Waf,因此Windows尚不可用。

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


44
感谢您回来回答您自己的问题。伟大的写作!
mpen 2013年

在Windows上,gm对我来说似乎有点慢-尽管我认为这部分取决于生成gm可执行文件实例所花的时间。
Gareth Oakley 2014年

11
时间已更改,NODE-Vips的更新时间为1年以上。我建议改为将Sharp添加到列表中。它也使用VIPS并得到积极维护:github.com/lovell/sharp
Simon Fakir

5
对于那些近来涉足此问题的人来说,LWIP是另一个不错的选择。没有外部依赖关系,它依赖于node.js C ++插件。
MaxArt 2015年

1
github.com/lovell/sharp(另一个用于libvips的节点绑定)现在可以在Windows上使用。
jcupitt

6

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

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


3

她是基于GDI +的画布实现的链接


1
我根本无法运行该程序。我只要得到它,就立即得到“%1不是有效的Win32应用程序”。
mpen
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.