NodeJS能进行图像处理和分析吗?

8
我在服务器端运行NodeJS,并尝试进行一些自动图像处理,以确定图像的“基础颜色”。以下是我想要做的步骤:
1. 获取图像的尺寸(在远程服务器上,通过URL传递)。 2. 利用图像的尺寸计算图像中心。 3. 在中心点周围取一个10px x 50px(WxL)的矩形。 4. 获取这些像素的RGB值(每个图像有500个像素)。 5. 输出像素的平均值。
我知道在PHP中可以实现这样的操作,但如果可能的话,我希望使用Node。我已经看到了使用Node-imagick进行基本处理(如调整大小和裁剪)的教程,但不知道如何开始进行更高级的分析。
问题:
(a) Node可以实现这个吗?
(b) 什么库可以让我实现这个?

4
您可能想查看此答案:https://dev59.com/cmgv5IYBdhLWcg3wTvLL#10717592 -- 注意:我强烈建议将此类操作转移到任何类型的后台工作程序中,因为Node.js的优势在于异步处理众多IO阻塞操作,而不是像图像处理这样的CPU阻塞/密集型操作。话虽如此,GM确实可以使用工作线程来执行此操作(不会阻塞事件循环)。 - Casey Flynn
4
在Web应用程序中,通常有一个或多个“应用服务器”,旨在快速处理大部分用户请求。对于非常耗费CPU或时间的操作,例如长API请求、图像处理、计算斐波那契数列(开玩笑),将作业输入到作业队列中,然后使用后台工作者逐个选择并完成,而不会给应用服务器带来负担。查看“gearman” - 它为我服务得很好。 - Casey Flynn
哦,是的,实际上这就是我正在做的事情。主要应用程序(前端)是在Node/MongoDB之上使用Angular构建的,还有一个爬虫每天运行一次以获取数据并添加到数据库中,我希望它以类似的方式运行,在爬虫完成后,从数据库加载数据并分析图像。您是在建议我使用PHP吗? - JVG
1
对于图像处理,我不能真正地推荐任何东西,除非进行更多的分析。只要确保您不在用于提供主应用程序的相同框/服务器上进行图像处理即可。图像处理需要极大的资源,并且可能会显著减慢应用程序的速度。后台工作程序通常是从队列中拉取作业的不同机器。听起来您已经在应用程序服务器上放置了一个cron作业,并在那里完成所有这些工作。 - Casey Flynn
1
远程连接不应该是问题。有很多作业排队库和系统可供选择,可以看看其中的一些。Gearman非常棒,因为它适用于许多编程语言。 - Casey Flynn
显示剩余2条评论
2个回答

27

A: 是的

B: gm

这里有更多的字符,以使它在stackoverflow上足够长...


低级图像处理很可能不会用JavaScript编写。系统编程语言更适合此类任务。虽然这并非不可能,你可以读取字节并对其进行操作,但这并不是最佳选择。 - Peter Lyons
Node是单线程的,图像处理通常是CPU密集型和高度可并行化的,因此多线程实现很可能更快。 - Peter Lyons

0

node-itk可能对您有所帮助。

Node-ITK是一个基于ITK构建的node.js包装器。它旨在促进node.js在快速原型设计、教育和医学图像处理Web服务中的使用。

https://npmjs.org/package/node-itk


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接