我在 node 上找到了large list of available libraries个.JS wiki,但我不确定哪一个更成熟,提供更好的性能.基本上我想做以下几点:

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

如果node包在Linux and Windows和Linux and Windows上都能工作,那么它将是一个巨大的优势.

推荐答案

Answering my own question

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

node-canvas

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

gm

  • 成熟
  • 在Windows上运行平稳
  • 文档有ok个,但并不全面:我必须查看源代码,以找出可用的API
  • 不幸的是,没有简单的方法将图像与通用汽车结合起来.也许有某种方法可以实现这一点,但在花了两个小时的时间后,我还没有找到一种方法.

node-imagemagick

  • 官方的repo几乎没有基本的ImageMagick命令,但我使用了this fork个(好消息是NPM可以直接从git存储库中提取库).它有montage的绑定,这正是我需要的.
  • ImageMagick is quite slow,尽管它可以在Windows上运行.

Node-Vips

  • 巨大的优势:它使用了我熟悉的令人难以置信的VIPS library.VIP速度非常快,并针对大型图像进行了优化.利用硬件资源非常明智:如果你的机器有大量RAM,它将在内存中完成所有处理,但如果内存不足或其他应用程序需要,它将切换到硬盘缓存.
  • 与 node 画布相同,它需要 node Waf,因此它还不能用于Windows.

我还查看了列表中的其他库,但大多数库要么非常不成熟,要么不适合我的用例.当Node Waf被移植到Windows时,我真的很想try 迁移到Node Canvas或Node vip,但在此之前,我将坚持使用Node imagemagick.

Node.js相关问答推荐

无法验证叶签名|无法验证第一个证书

nest js控制器方法调用两次

如何解决TypeError:requ.isAuthenticated不是函数错误?

已知NPM无法在node.js V12上运行的问题

Node.js分页返回空数组

用于SLACK命令返回json而不是文本的AWS lambda函数

编写动态创建的 YAML - 为生态系统创建 Docker compose 文件(使用 js-yaml)

如何从 Mongo Atlas 触发器向 GCP PubSub 发出经过身份验证的请求

如何设置 Puppeteer Select 器的唯一性?

每秒从套接字传来的数据有哪些存储方式?

Mocha调用所有it回调模拟(测试中间件)

Nodejs mongoose 在一个查询中从多个集合中获取结果

mongoose.model() 方法返回未定义

node.js 变量不存在代码块

Node.js mongodb 驱动程序异步/等待查询

如何以编程方式检测nodejs中的调试模式?

npm WARN 不推荐使用 graceful-fs@3.0.8:graceful-fs 版本 3

Passport 的 req.isAuthenticated 总是返回 false,即使我硬编码 done(null, true)

使用 Mongoose 进行多对多映射

在 Node.js 上使用 Connect 无法获取 /