【问题标题】:What packages are available for node.js to do image cropping? [closed]node.js 可以使用哪些包来进行图像裁剪? [关闭]
【发布时间】:2011-05-31 07:00:01
【问题描述】:

我正在使用 node.js 创建一个网站。我见过很多图书馆提到在 imagemagick 等之上搭载。这里有一个列表:https://github.com/ry/node/wiki/modules#graphics

我要做的是获取用户上传的图像,将其裁剪/调整到网站需要的特定尺寸。执行此操作的最佳/最活跃的脚本是什么?我想要一个支持 npm 的。有没有人有使用其中一些的实际经验?

【问题讨论】:

  • 这句话可以改写成不那么主观。 “什么是最好的……”问题通常没有帮助。

标签: javascript node.js imagemagick


【解决方案1】:

如果您需要能够在图像上绘制或制作效果,也许您仍然需要画布或 ImageMagick,但就速度和内存使用而言,有一些更好的选择。

这是几个不同图像库的基准。

https://github.com/libvips/libvips/wiki/Speed-and-memory-use

ImageMagick 速度慢并且消耗大量内存。

试试sharp library 使用的 Vips。

【讨论】:

    【解决方案2】:

    对于任何试图在 Canvas 和 ImageMagick 之间做出决定的人,我只是尝试了两者进行比较,并且我从 imagemagick 获得了更好的结果。这是一张从 1024x768 调整大小并裁剪为 128x128 的图像:

    http://i.imgur.com/tfeft.png

    【讨论】:

    • 使用带有resizeImage() 的IMagick、使用imagick::FILTER_LANCZOS 过滤器(高级重采样算法)以及将锐化设置为0.9 左右可以获得更好的结果。
    【解决方案3】:

    我使用了来自 LearnBoost 人员的节点画布 - https://github.com/learnboost/node-canvasnpm install canvas - 他们对问题非常敏感,并且库编写得很好且稳定。我认为您还不能从内存中创建图像,但如果 node-imagemagick 不适合您,那么值得一试。

    如果您熟悉浏览器端的画布 API,则应该直接从文件创建图像并将其绘制到较小的画布中。这里有一个例子:

    https://github.com/LearnBoost/node-canvas/blob/master/examples/resize.js

    如果您熟悉 C++,将方法添加到本机对象是相当容易的,该项目第一次在 Mac OS 上为我构建得很干净。为节点画布提供支持的图形库 cairo 的文档也很清楚。我会看一下 Image 对象的加载函数,看看是否有办法从节点缓冲区加载:

    https://github.com/LearnBoost/node-canvas/blob/master/src/Image.h

    https://github.com/LearnBoost/node-canvas/blob/master/src/Image.cc

    祝你好运!

    【讨论】:

      【解决方案4】:

      我想我找到了一个不错的 imagemagick 包装器,可以很好地处理这个问题。甚至在将文件写入磁盘之前在内存中。 (又名用户上传 -> 节点 imagemagick lib -> cdn 并且从不接触磁盘......这就是我想要的)

      https://github.com/rsms/node-imagemagick

      【讨论】:

      • node-imagemagick 库就像一个魅力
      • 由于 Windows 上缺少 child_process,目前似乎无法在 Windows 上运行 :(
      • 另外,checkout gm 可以与 imagemagick 或 graphicsmagick 一起使用。它有一个很棒的可链接的 API,并且得到了积极的支持。 github.com/aheckmann/gm我会添加一个新答案,但我不能,因为这个问题已关闭。
      • 这是一个非常错误的库。
      猜你喜欢
      • 2012-04-15
      • 1970-01-01
      • 2011-12-15
      • 2011-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-03
      • 2015-12-08
      相关资源
      最近更新 更多