【发布时间】:2013-07-10 11:55:08
【问题描述】:
我在服务器端运行NodeJS,我正在尝试进行一些自动图像处理以确定图像的“基色”。
以下是我想要做的步骤:
- 获取图像(在远程服务器上,因此通过 URL 传递)并获取其尺寸
- 使用尺寸计算图像的中心
- 围绕中心点画一个 10 像素 x 50 像素 (WxL) 的矩形
- 获取每个像素的 RGB 值(每张图像 500 个)
- 输出像素的平均值
我知道这样的事情在 PHP 中是可能的,但我想使用 Node 是可能的。我看过关于使用Node-imagick 进行基本处理(如调整大小和裁剪)的教程,但不知道从哪里开始进行更高级的分析。
问题
(a) Node 可以做到这一点吗?
(b) 哪些库允许我这样做?
【问题讨论】:
-
您可能想查看这个答案:stackoverflow.com/a/10717592/480807 -- 注意:我强烈建议将此类操作卸载到任何类型的后台工作人员,因为 Node 的优势在于异步处理大量 IO 阻塞操作而不是 CPU 阻塞/密集型操作(例如图像处理)。话虽这么说,GM 确实使用工作线程(不阻塞事件循环)来完成这项工作
-
有趣。你能解释一下
background worker是什么意思吗?我想我可以毫不费力地使用 PHP,因为我只是在 Node 中构建了其他所有东西,所以我想把它们都放在同一个地方。但我肯定想在我的服务器上做任何最快/最轻的负载! -
通常在 Web 应用程序中,您拥有旨在快速处理大量用户请求的“应用程序服务器”。对于 CPU 密集型或耗时的操作,例如长 API 请求、图像处理/处理、计算斐波那契数列(笑话),将作业输入到作业“队列”中,然后使用后台工作人员并在不增加应用程序服务器负担的情况下完成。看看“gearman”——它对我很有帮助。
-
对于图像处理,如果没有更多的分析,我不能真正推荐任何东西。只需确保您没有在用于服务主应用程序的相同盒子/服务器上进行图像处理。图像处理非常耗费资源,并且会显着降低您的应用程序的速度。后台工作人员通常是从队列中提取作业的不同机器。听起来您已经在应用程序服务器上放置了一项 cron 作业,并且您正在那里完成所有这些工作。
-
远程连接应该不是问题。那里有很多工作排队库和系统,看看几个。 Gearman 很棒,因为它适用于一大堆语言。
标签: javascript image node.js image-processing