2011-12-01 56 views
2

我正在編寫一個應用程序,它需要獲取屏幕上像素的顏色才能運行不同的自動化測試。快速獲取屏幕上的像素信息

(是的,我知道已經存在的自動化測試庫,不,我不能使用它們)

目前,我用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(或其他)的方法。

+0

也許這個解決方案可以幫助您:http://stackoverflow.com/questions/7168839/how-does-robots-getpixelcolorint-x-int-y-method-work – Anthea

回答

1

嘗試使用Robot類的createScreenCapture(Rectangle screenRect)獲取BufferedImage,然後使用BufferedImagegetRGB(int x, int y)。這應該是快

1

您可能想要嘗試使用r.createScreenCapture()一次獲取屏幕,然後遍歷得到的圖像緩衝區。這可能比反覆調用getPixelColor()更快。否則,抓取屏幕截圖的C程序肯定比java快。

+0

是的,這會更快。 – camickr