Java Robot,在屏幕上查找某些图像

时间:2014-06-29 12:36:29

标签: java pixel awtrobot

我正在尝试使用Java Robot类创建一个机器人来为我自动执行一些繁琐的任务,我从未使用过Robot类。我在Java文档中查找了类,用法看起来很简单,但我有一个问题就是找到某个图像(我说图像,我的意思是屏幕的某个部分)。有没有其他方法除了加载'x'ammount像素,检查它们,检查下一个ammount等,直到我找到我正在寻找的图像?还有任何Java Robot类所需的Button和MouseButton标识符列表,因为我找不到。

1 个答案:

答案 0 :(得分:1)

对于鼠标按钮标识符,您应该使用来自java.awt.event.MouseEvent的BUTTON1_MASK和其他按钮蒙版常量。例如,要单击鼠标,您将执行以下操作:

Robot r = new Robot();
r.mousePress(MouseEvent.BUTTON1_MASK);
r.mouseRelease(MouseEvent.BUTTON1_MASK);

我相信BUTTON1_MASK是鼠标左键,BUTTON2_MASK是鼠标中键,BUTTON3_MASK是鼠标右键,但是自从我使用Robot以来已经有一个月了。

至于检查图像,我不知道通常是怎么做的。但是你在问题中指定的方式,你只需检查每组像素不应该太昂贵计算,因为你可以将屏幕图像作为基元数组,然后只需用一点数学来访问所需的像素。因此,在检查要搜索图像的像素的“矩形”时,只要像素保持匹配,就只能继续检查像素。当您找到不匹配的像素时,移动到下一个像素的“矩形”。您将找到与最终不是图像的图像匹配的一堆像素的概率非常低,这意味着每个矩形平均只需要检查大约5个或更少的像素。执行此任务的任何软件都必须至少检查一次屏幕上的每个像素(除非根据图像变化的概率进行一些快捷方式/假设),并且我描述的算法将检查每个像素大约5次,所以实施并不是那么糟糕,除非你有一个巨大的图像要检查。

希望这有帮助!