【问题标题】:Which library should I use for server-side image manipulation on Node.JS? [closed]我应该使用哪个库在 Node.JS 上进行服务器端图像处理? [关闭]
【发布时间】:2012-05-28 08:33:10
【问题描述】:

我在 Node.JS wiki 上找到了一个相当 large list of available libraries,但我不确定其中哪个更成熟并提供更好的性能。基本上我想做以下事情:

  1. 从外部来源将一些图像加载到服务器
  2. 将它们放在一张大画布上
  3. 裁剪并稍微掩盖它们
  4. 应用一个或两个过滤器
  5. 调整最终图像的大小并提供指向它的链接

如果节点包在 Linux 和 Windows 上都可以工作,那就大加分了。

【问题讨论】:

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


【解决方案1】:

回答我自己的问题

我花了两天时间研究 Node.js 图形库。

node-canvas

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

gm

  • 成熟
  • 在 Windows 上流畅运行
  • 文档还可以,但不够全面:我不得不查看源代码以找出可用的 API
  • 不幸的是,没有简单的方法可以将图像与 gm 结合起来。也许有一些方法可以实现这一点,但我花了两个小时才找到它。

node-imagemagick

  • 官方 repo 几乎没有涵盖基本的 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。

【讨论】:

  • 感谢您回来回答您自己的问题。写得真好!
  • 在 Windows 上 gm 对我来说似乎有点慢 - 尽管我认为这部分是因为生成 gm 可执行文件的实例需要多长时间。
  • 时间变了,NODE-Vips 1 年多没有更新。我建议改为将 Sharp 添加到列表中。它还使用 VIPS 并积极维护:github.com/lovell/sharp
  • 对于这些天进入这个问题的人来说,LWIP 是另一个不错的选择。没有外部依赖,它依赖于 node.js C++ 插件。
  • github.com/lovell/sharp 是 libvips 的另一个节点绑定,现在可以在 Windows 上运行。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 我根本无法运行这个东西。只要我需要它,我就会得到“%1 不是有效的 Win32 应用程序”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-01
    • 2022-12-20
    • 2012-01-17
    • 1970-01-01
    • 2011-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多