介绍
简单来说,找图找色,就是在某个窗口界面里找到你想要的图或者颜色。实现思路就是对某个窗口进行图片截取,然后从这个图片里找到你想要的目标。AHK提供了3个基本的函数可以实现这些需求,不过今天要说的是一个更强大的东西:ImagePut 这是AutoHotkey 中的图像核心库,使用它可以轻松的实现找图找色
首先把它下载下来
然后引用一下ImagePut.ahk,根据你的实际路径修改
#Include ..\plugin\ImagePut.ahk
对某窗口截图
下面展示了两种方式截图,既可以直接使用窗口的title,也可以使用窗口句柄,pic.show会将图片显示出来,可以通过这个方式看一下截图功能是否正常
找图
之后在这个图上,寻找想要的图片,例如我想寻找雷电游戏中心
我先把这个小图截取下来保存,然后使用ImageSearch方法去寻找
如果目标存在,会返回左上角的坐标,xy[1]是x轴坐标,xy[2]是y轴坐标
由于图片颜色可能会存在误差,所以可以传递第二个参数来表示差异度,颜色是由三个通道Red、Green、Blue组成的,每个值用16进制表示即从0到FF,转换成10进制是0到255。差异度指的就是这个值的变化程度范围,传递50,大概范围就是上下浮动20%
找色
从图片上的某坐标取色值,这个用法非常简单,直接读取pic的坐标点即可
会弹出坐标100,100处的色值
前两位0x表示16进制
接下来两位FF表示不透明度为100%,取值范围0-FF
后面6为RGB值
只从一个坐标点取色判断往往是不准确的,实际场景中,一般会进行多点取色判断
取某色值数量
这是一个可以代替多点取色,简单有效的方法,即判断图中某个范围内容某颜色值数量的多少
例如在火影忍者游戏里,我通过判断左侧框选位置的白色值数量,来确定是否处于开战页面
添加图片注释,不超过 140 字(可选)
首先还是先截图
pic := ImagePutBuffer(huoying)
其次在这个大的截图里取小图,四个参数表示要截取的x坐标,y坐标,宽,高
npic := pic.crop(32, 189, 100, 240)
最后查询颜色值数量
l := npic.PixelSearchAll(0xFFFFFFFF)
通过l的数量,就可以知道当前是处于哪个页面。这种方法更简单粗暴。