我正在尝试使用node.js获取屏幕上像素的颜色。我希望它以RGB格式返回,例如(255,0,0)。我目前的解决方案是使用screenshot-desktop以JPG格式截图我的整个屏幕,对其进行解码以获取原始像素数据,并获取给定像素的颜色。然而,这比我的整个电脑落后1-2秒,因为它是截图。这是不可用的,因为我想要这样做多次每秒。因此,我的问题是:我如何才能获得屏幕上给定像素的颜色,而不采取完整的屏幕截图?
我正在与X11一起使用Linux。这里有一个用于X11的node.js库,所以我想我应该用它来获得像素的颜色,我只是不知道怎么做。如果您可以向我展示如何用C语言进行操作,那么我可以很容易地使用node.js来做同样的事情。
谢谢!
发布于 2022-04-10 19:30:34
哦,天哪,我刚发完这篇文章就想出来了。我用robotjs来读取鼠标位置,我完全忘记了它也能做屏幕上的事情!所以,解决办法就是
var robot = require('robotjs');
var color = robot.getPixelColor(x, y);发布于 2022-04-12 01:06:21
使用X11节点库的x11解决方案(我是作者):
GetImage(format, currentWindow, x, y, 1, 1, planeMask) (格式为2,平面掩码为0xffffff )。在遍历窗口树时,请确保计算相对x位置。的最后一个窗口。
一旦你从最上面的窗口得到了1x1像素映射--缓冲区应该只包含图像的颜色字节,RGB顺序和位掩码可能依赖于red_mask、green_mask、display.screen[0].depths[visual]的blue_mask。
如果您在请求之间缓存“最顶层窗口”,并且只在不再匹配的情况下从根开始,那么上述解决方案可能比使用robotjs的解决方案(尽管级别更低、更复杂)的性能要高得多,祝您好运!
https://stackoverflow.com/questions/71819873
复制相似问题