从屏幕快速获取像素信息

5

我正在编写一个应用程序,需要获取屏幕上像素的颜色来运行不同的自动化测试。

(是的,我知道已有自动化测试库。 不,我不能使用它们。)

目前,我正在使用Java编写程序,主要做到以下几点:

Robot r = new Robot();
for (int i = 0; i < 10; i++)
    for (int j = 0; j < 10; j++)
        r.getPixelColor(i*20, j*20);

这样做的问题在于速度非常慢。这个扫描大约需要一秒钟的时间。(每个像素10毫秒。)有两个问题:(1)我希望它更快,(2)在一秒内,屏幕已经发生变化了。由于各种原因,屏幕只会每半秒更新一次,因此唯一重要的问题是(1)。
有没有办法更快地获取像素颜色信息?如果没有Java库可以做到这一点,我很乐意听听使用C(或其他语言)实现的方法。

也许这个解决方案可以帮到你:https://dev59.com/HFrUa4cB1Zd3GeqPlJEg - Anthea
2个回答

6

尝试使用Robot类的createScreenCapture(Rectangle screenRect)方法获取BufferedImage,然后使用BufferedImagegetRGB(int x, int y)方法。这样应该会更快。


2
你可以尝试使用r.createScreenCapture()一次性获取屏幕,然后遍历结果图像缓冲区。这可能比重复调用getPixelColor()更快。否则,一个抓取屏幕截图的C程序肯定比Java更快。

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