Robot的getPixelColor(int x,int y)方法如何工作?

ble*_*ddd 3 java time pixel colors awtrobot

Robot类的方法getPixelColor(int x,int y)究竟是如何工作的?我试过这个代码片段:

try 
{
     Robot robos = new Robot();
}
catch (AWTException e) 
{

}

for (int i = 0; i < 100; i++)
    robos.getPixelColor(0, 0);

System.out.println("fsadf");
Run Code Online (Sandbox Code Playgroud)

在我的PC上,这是一个核心的2人组合,并且花了一秒或更少的时间来执行print语句.但是,当我在我的笔记本电脑上运行相同的代码时,这是一个核心i3,它花费了更多的时间(大约2-3秒).

这背后的原因是什么?它是否与屏幕质量或类似的东西有关?我怎么解决这个问题?

cam*_*ckr 9

我怎么解决这个问题?

不要使用机器人逐个像素地获取颜色.使用Robot创建一个屏幕的BufferedImage.然后,您可以使用BufferedImage的getRGB()方法获取表示像素颜色的int值.然后,您可以使用此int创建颜色对象,或直接解析红色/绿色/蓝色值.

  • 没有错,只是效率不高,正如您所注意到的。进行一次系统调用以创建图像比进行数千次系统调用以一次获取一个像素的效率要高得多。 (2认同)
  • 'createScreenCapture()`的+1.相关示例[此处](http://stackoverflow.com/questions/3742731/java-how-to-draw-constantly-changing-graphics). (2认同)