2012-03-31 4 views
0

Я пишу программу, которая требует от меня очистить данные с экрана, я делаю это, перебирая каждый пиксель на экране и сохраняя цвет, но это очень дорогостоящий указ и берет времяУскорение распознавания пикселей в java

Приведенный ниже код является то, что я использую, чтобы очистить данные

try 
{ 
    Robot r = new Robot(); 
    for(int a = 0; a < height; a++) 
    { 
      for (int b = 0; b < width; b++) 
      { 
       Color p = r.getPixelColor(a, b); 
       int red = p.getRed(); 
       int blue = p.getBlue(); 
       int green = p.getGreen(); 

       screen[a][b][0] = red; 
       screen[a][b][1] = blue; 
       screen[a][b][2] = green; 
      } 
     } 
} 
catch(AWTException e) {} 

есть ли способ я могу улучшить это или есть какие-либо альтернативы использования этого класса или метода

ответ

1

Использование Robot.createScreenCapture() для создать BufferedImage определенной области в одном вызове метода.

Если это не работает по соображениям безопасности, второй вариант заключается в том, чтобы изменить исходные тексты, чтобы он отображал пользовательский интерфейс в BufferedImage, который затем можно клонировать для его анализа (или проанализировать его напрямую, если вы можете предотвратить изменения в Это).

+0

Если я присваиваю это переменной, я могу просто перебирать ее, как если бы это был пиксель на экране, или мне нужно сделать это по-другому. – Dan

+0

Ваш вопрос не имеет смысла. Вы знаете, как работать с BufferedImage? если нет, прочитайте это: http://www.exampledepot.com/egs/java.awt.image/imagepixel.html В вашем случае вы, вероятно, захотите скопировать пиксели в массив 'int' для более быстрого доступа, где каждая запись это весь цвет RGB (вместо создания трех массивов). –

+0

Thankyou Это именно то, что я искал – Dan

Смежные вопросы