我正在编写一个应用程序,需要在屏幕上获取像素颜色以运行不同的自动化测试。
(是的,我知道已有的自动化测试库。不,我不能使用它们。)
目前,我正在用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(或其他)方法这样做。
答案 0 :(得分:3)
尝试使用Robot类的createScreenCapture(Rectangle screenRect)
获取BufferedImage
,然后使用getRGB(int x, int y)
的{{1}}。那应该很快
答案 1 :(得分:1)
您可能希望尝试使用r.createScreenCapture()
一次获取屏幕,然后迭代生成的图像缓冲区。这可能比重复调用getPixelColor()
更快。否则,绝对抓住屏幕捕获的C程序会比java快。