快速从屏幕获取像素信息

时间:2011-12-01 23:56:19

标签: java testing graphics

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

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

目前,我正在用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);

问题在于它真的很慢。扫描需要大约一秒钟。 (每像素10ms。)有两个问题:(1)我希望它快,(2)在一秒钟内,屏幕已经改变了。由于各种原因,屏幕每半秒更新一次,因此唯一重要的问题是(1)。

有没有办法更快地获取像素颜色信息?如果没有Java库可以做到这一点,我很高兴听到C(或其他)方法这样做。

2 个答案:

答案 0 :(得分:3)

尝试使用Robot类的createScreenCapture(Rectangle screenRect)获取BufferedImage,然后使用getRGB(int x, int y)的{​​{1}}。那应该很快

答案 1 :(得分:1)

您可能希望尝试使用r.createScreenCapture()一次获取屏幕,然后迭代生成的图像缓冲区。这可能比重复调用getPixelColor()更快。否则,绝对抓住屏幕捕获的C程序会比java快。