public class Robot
extends java.lang.Object
限定符和类型 | 字段和说明 |
---|---|
static java.util.Map<java.lang.String,java.awt.image.BufferedImage> |
bufferedImageList
图片搜索的缓存,搜索图片时某个图片使用后会将其加入内存,以后再次使用此图会先从程序内存找,内存没有才会从硬盘加载。
|
static int |
screenHeight
当前屏幕的高度。
|
static int |
screenWidth
当前屏幕的宽度。
|
static int |
SIM_ACCURATE
搜索模糊度参数:精确
|
static int |
SIM_ACCURATE_VERY
搜索模糊度参数:非常精确,精确无误
|
static int |
SIM_BLUR
搜索模糊度参数:模糊
|
static int |
SIM_BLUR_VERY
搜索模糊度参数:非常模糊
|
构造器和说明 |
---|
Robot() |
限定符和类型 | 方法和说明 |
---|---|
boolean |
colorCompare(java.awt.Color color1,
java.awt.Color color2,
int sim)
两颜色值比较,是否匹配
|
boolean |
colorCompare(int pxSource,
int pxSearch,
int sim)
两像素点的颜色值比较,是否匹配
|
void |
delay(int ms)
延迟等待
|
boolean |
getColorCompare(int x,
int y,
java.lang.String hex,
int sim)
判断某点的颜色是否跟制定的颜色相匹配
|
java.awt.Color |
getPixelColor(int x,
int y)
获取屏幕上某点颜色
|
RgbImageComparerBean |
getPX(java.awt.image.BufferedImage bufferedImage)
将图片改变成像素数据,同时获取搜索图片时的图片相关参数
|
java.awt.image.BufferedImage |
getResourceImage(java.lang.String fileName)
根据文件名返回要使用的资源文件。
|
java.awt.Robot |
getRobot()
获取
Robot 对象 |
boolean |
imageDelaySearch(int xStart,
int yStart,
int xEnd,
int yEnd,
java.awt.image.BufferedImage image,
int sim,
int maxDelay)
等待,直到此区域图片跟指定图片匹配
|
java.util.List<CoordBean> |
imageSearch(java.awt.image.BufferedImage sourceImage,
java.awt.image.BufferedImage searchImage,
int sim)
当前屏幕上搜索图片
图片搜索顺序为 由上向下,由左向右
|
java.util.List<CoordBean> |
imageSearch(int xStart,
int yStart,
int xEnd,
int yEnd,
java.awt.image.BufferedImage searchImage,
int sim)
当前屏幕指定区域,与指定的图片比较其相似度
图片搜索顺序为 由上向下,由左向右
|
java.util.List<CoordBean> |
imageSearch(int xStart,
int yStart,
int xEnd,
int yEnd,
java.lang.String searchImageName,
int sim)
当前屏幕指定区域,与指定的图片比较其相似度,如:
Robot robot = new Robot();
robot.setSourcePath(当前类.class);
List
setSourcePath(Class) ,不然找不到传入的图片在何处。 |
java.util.List<CoordBean> |
imageSearch(java.lang.String imageName,
int sim)
当前屏幕指定区域,与指定的图片比较其相似度
图片搜索顺序为 由上向下,由左向右
需先调用
setSourcePath(Class) 方法设置资源文件路径。 |
static void |
main(java.lang.String[] args) |
void |
mouseClick(int x,
int y,
int buttons)
鼠标点击
|
void |
mouseLeftClick(int x,
int y)
当前屏幕上鼠标左键点击
|
void |
mousePressLeft()
鼠标按住左键,一直按着,配合
mouseReleaseLeft() 弹起释放左键一并使用 |
void |
mousePressRight()
鼠标按住右键,一直按着,配合
mouseReleaseRight() 弹起释放右键一并使用 |
void |
mouseReleaseLeft()
鼠标释放左键,弹起左键
|
void |
mouseReleaseRight()
鼠标释放右键,弹起右键
|
void |
mouseRightClick(int x,
int y)
当前屏幕上鼠标右键点击
|
void |
mouseWheel(int wheelAmt)
鼠标滚轮
|
void |
press(int key)
按键
|
void |
press(int key1,
int key2)
组合键,如SHIFT+1
|
void |
saveScreenCapture(java.awt.image.BufferedImage image,
java.lang.String filePath)
将
BufferedImage 保存为本地图像文件 |
java.awt.image.BufferedImage |
screenCapture()
全屏截图
|
void |
screenCapture(int xStart,
int yStart,
int xEnd,
int yEnd,
java.lang.String filePath)
截取当前屏幕指定区域坐标的图像,将其保存到本地,保存为png格式图片
|
void |
screenCapture(java.lang.String filePath)
全屏截图,保存为本地文件
|
void |
sendString(java.lang.String text)
向当前窗口输入文本
|
void |
setSourcePath(java.lang.Class c)
设置资源文件路径,加载的资源文件都是在这个资源文件。
|
int |
StringToKey(java.lang.String key)
将字符型转换为按键码,可直接使用
press(int) 调用 |
public static int screenWidth
public static int screenHeight
public static java.util.Map<java.lang.String,java.awt.image.BufferedImage> bufferedImageList
public static final int SIM_ACCURATE_VERY
public static final int SIM_ACCURATE
public static final int SIM_BLUR
public static final int SIM_BLUR_VERY
public Robot()
Robot
public void setSourcePath(java.lang.Class c)
getResourceImage(String)
这些获取资源文件的方法使用前必须先执行此方法进行设置资源文件所在路径 c
- 传入使用此Robot类的类,用来确定资源文件所在。资源文件都放置于传入的类当前文件夹下的res文件夹中public int StringToKey(java.lang.String key)
press(int)
调用key
- 字符型文字,包含 0~9 a~z .public void press(int key)
key
- 如:KeyEvent.VK_A
public void press(int key1, int key2)
key1
- 如:KeyEvent.VK_SHIFT
key2
- 如:KeyEvent.VK_1
public java.awt.Robot getRobot()
Robot
对象Robot
public void sendString(java.lang.String text)
text
- 不支持汉字,仅支持:a~z 0~9 !@#$%^&*()_:public void mouseLeftClick(int x, int y)
x
- 屏幕的X坐标y
- 屏幕的Y坐标public void mouseRightClick(int x, int y)
x
- 屏幕的X坐标y
- 屏幕的Y坐标public void delay(int ms)
ms
- 毫秒public void mouseClick(int x, int y, int buttons)
x
- 点击的当前屏幕的x坐标y
- 点击的当前屏幕的y坐标buttons
- 何种方式点击,是左还是右,同 Robot.mousePress(int)
的参数public void mousePressRight()
mouseReleaseRight()
弹起释放右键一并使用public void mouseReleaseRight()
public void mousePressLeft()
mouseReleaseLeft()
弹起释放左键一并使用public void mouseReleaseLeft()
public void mouseWheel(int wheelAmt)
wheelAmt
- 滚轮次数(滚轮方式系统设置不同,以下仅供参考,可自行测试)
public boolean imageDelaySearch(int xStart, int yStart, int xEnd, int yEnd, java.awt.image.BufferedImage image, int sim, int maxDelay)
xStart
- 当前屏幕要对比的区域的开始X坐标yStart
- 当前屏幕要对比的区域的开始Y坐标xEnd
- 当前屏幕要对比的区域的结束X坐标yEnd
- 当前屏幕要对比的区域的结束Y坐标image
- 指定寻找的目标图片sim
- 模糊值,建议使用SIM_ACCURATE
、SIM_BLUR
。传入值说明:
SIM_ACCURATE_VERY
精确无误,无任何误差,
SIM_ACCURATE
精确,极小的误差(RGB误差30/255)
SIM_BLUR
模糊,有误差(RGB误差60/255):
SIM_BLUR_VERY
非常模糊搜索,误差大,速度很慢(RGB误差100/255):
maxDelay
- 最长的等待时间,单位为毫秒。如果超过这个时间图片还没出现,返回falsepublic void screenCapture(int xStart, int yStart, int xEnd, int yEnd, java.lang.String filePath)
xStart
- 截图指定区域的开始X坐标yStart
- 截图指定区域的开始Y坐标xEnd
- 截图指定区域的结束X坐标yEnd
- 截图指定区域的结束Y坐标filePath
- 截图保存的路径,如: /Users/apple/Desktop/xnx3.pngpublic java.awt.image.BufferedImage screenCapture()
BufferedImage
public void screenCapture(java.lang.String filePath)
filePath
- 截图保存的路径,如: /Users/apple/Desktop/xnx3.pngpublic void saveScreenCapture(java.awt.image.BufferedImage image, java.lang.String filePath)
BufferedImage
保存为本地图像文件image
- 要保存的图像filePath
- 保存至本地的文件路径,如: /Users/apple/Desktop/xnx3.pngpublic java.awt.image.BufferedImage getResourceImage(java.lang.String fileName)
setSourcePath(Class)
方法设置资源文件路径。这个只执行一次便可。读取的资源文件都是在当前类文件下的res文件夹下
fileName
- 资源文件的文件名,如: xnx3.png
setSourcePath(Class)
传入的类的当前目录,有res文件夹,xnx3.png在res文件夹内
public RgbImageComparerBean getPX(java.awt.image.BufferedImage bufferedImage)
bufferedImage
- 要转换的成像素数据的图片RgbImageComparerBean
public java.util.List<CoordBean> imageSearch(int xStart, int yStart, int xEnd, int yEnd, java.lang.String searchImageName, int sim)
Robot robot = new Robot(); robot.setSourcePath(当前类.class); Listlist = robot.imageSearch(0, 0, 100, 200, "xnx3.png", Robot.SIM_ACCURATE);
setSourcePath(Class)
,不然找不到传入的图片在何处。robot创建后只需设置一次便可
xStart
- 当前屏幕要对比的区域的开始X坐标yStart
- 当前屏幕要对比的区域的开始Y坐标xEnd
- 当前屏幕要对比的区域的结束X坐标yEnd
- 当前屏幕要对比的区域的结束Y坐标searchImageName
- 要搜索的目标图片文件名字,如果多个,则用英文输入法下的符号 | 隔开,如:a.png|b.png|c.pngsim
- 模糊值,值:
SIM_ACCURATE_VERY
精确无误,无任何误差,
SIM_ACCURATE
精确,极小的误差(RGB误差30/255)
SIM_BLUR
模糊,有误差(RGB误差60/255):
SIM_BLUR_VERY
非常模糊,很大误差(RGB误差81/255):
SIM_ACCURATE_VERY
: 440ms
SIM_ACCURATE
: 454ms
SIM_BLUR
: 1267ms
SIM_BLUR_VERY
: 37518ms
List
将所有找到的图像位置的左上坐标返回,如果搜索不到,list.size()为0public java.util.List<CoordBean> imageSearch(java.awt.image.BufferedImage sourceImage, java.awt.image.BufferedImage searchImage, int sim)
sourceImage
- 原图,要在这个图上进行搜索目标图,使用 getResourceImage(String)
传入资源图片searchImage
- 要搜索的目标图片,使用 getResourceImage(String)
传入要搜索的目标资源文件sim
- 模糊值,值:
SIM_ACCURATE_VERY
精确无误,无任何误差,
SIM_ACCURATE
精确,极小的误差(RGB误差30/255)
SIM_BLUR
模糊,有误差(RGB误差60/255):
SIM_BLUR_VERY
非常模糊,很大误差(RGB误差81/255):
SIM_ACCURATE_VERY
: 440ms
SIM_ACCURATE
: 454ms
SIM_BLUR
: 1267ms
SIM_BLUR_VERY
: 37518ms
List
将所有找到的图像位置的左上坐标返回,如果搜索不到,list.size()为0public java.util.List<CoordBean> imageSearch(int xStart, int yStart, int xEnd, int yEnd, java.awt.image.BufferedImage searchImage, int sim)
xStart
- 当前屏幕要对比的区域的开始X坐标yStart
- 当前屏幕要对比的区域的开始Y坐标xEnd
- 当前屏幕要对比的区域的结束X坐标yEnd
- 当前屏幕要对比的区域的结束Y坐标searchImage
- 要搜索的目标图片,使用 getResourceImage(String)
传入要搜索的目标资源文件sim
- 模糊值,值:
SIM_ACCURATE_VERY
精确无误,无任何误差,
SIM_ACCURATE
精确,极小的误差(RGB误差30/255)
SIM_BLUR
模糊,有误差(RGB误差60/255):
SIM_BLUR_VERY
非常模糊,很大误差(RGB误差81/255):
SIM_ACCURATE_VERY
: 440ms
SIM_ACCURATE
: 454ms
SIM_BLUR
: 1267ms
SIM_BLUR_VERY
: 37518ms
List
若 list.size()>0 则搜索到了数值,若=0则没有搜索到图片imageSearch(BufferedImage, BufferedImage, int)
public java.util.List<CoordBean> imageSearch(java.lang.String imageName, int sim)
setSourcePath(Class)
方法设置资源文件路径。这个只执行一次便可。读取的资源文件都是在当前类文件下的res文件夹下
imageName
- 资源文件的文件名,如: xnx3.png
setSourcePath(Class)
传入的类的当前目录,有res文件夹,xnx3.png在res文件夹内
sim
- 模糊值,值:
SIM_ACCURATE_VERY
精确无误,无任何误差,
SIM_ACCURATE
精确,极小的误差(RGB误差30/255)
SIM_BLUR
模糊,有误差(RGB误差60/255):
SIM_BLUR_VERY
非常模糊,很大误差(RGB误差81/255):
SIM_ACCURATE_VERY
: 440ms
SIM_ACCURATE
: 454ms
SIM_BLUR
: 1267ms
SIM_BLUR_VERY
: 37518ms
List
若 list.size()>0 则搜索到了数值,若=0则没有搜索到图片imageSearch(BufferedImage, BufferedImage, int)
public boolean colorCompare(java.awt.Color color1, java.awt.Color color2, int sim)
color1
- 颜色1color2
- 颜色2sim
- 模糊值,如:
SIM_ACCURATE_VERY
SIM_ACCURATE
SIM_BLUR
SIM_BLUR_VERY
public boolean colorCompare(int pxSource, int pxSearch, int sim)
pxSource
- 像素1,原像素,十进制的颜色值pxSearch
- 像素2,要搜索对比的像素,十进制的颜色值sim
- 模糊值,如:
SIM_ACCURATE_VERY
SIM_ACCURATE
SIM_BLUR
SIM_BLUR_VERY
public boolean getColorCompare(int x, int y, java.lang.String hex, int sim)
x
- 要判断的点的x坐标y
- 要判断的点的y坐标hex
- 要比对的制定的颜色,十六进制,传入如 "FFFFFF"sim
- 模糊值,如:
SIM_ACCURATE_VERY
SIM_ACCURATE
SIM_BLUR
SIM_BLUR_VERY
public java.awt.Color getPixelColor(int x, int y)
x
- 获取的点在屏幕的x坐标y
- 获取的点在屏幕的y坐标Color
public static void main(java.lang.String[] args)