【安卓按键精灵自动取色(可用于比色,多点找色,找图实现)】

安卓按键精灵大家都知道脚本找色比色会比找图更快,但是一个点一个点的手动取色也太麻烦了~
于是有了这个自动取色教程(说不准以后就是脚本自动写脚本了)

找色找图的原理实现很多大佬都已经说过了,我们的任务就是找当前界面唯一或者较少特征,这里就不说那么多废话啦,直接上实战~

既然是自动取色,那么我们首先得知道,助手帮你生成的数据是怎么来滴~

在这里插入图片描述

我们把助手的数据复制一下出来看看,不同命令的格式以及数据如何生成的
多点找色:
“1E841E”,“14|-1|2E942E,41|17|82C693,47|14|C6D7D7,67|-8|D2E3D2,-14|11|CECECE,13|0|1A801A”
复制代码
多点比色:
“280|1108|1E841E,294|1107|2E942E,321|1125|82C693,327|1122|C6D7D7,347|1100|D2E3D2,266|1119|CECECE,293|1108|1A801A”
复制代码
我们可以看到
找色第一个数据是我们采集第一个点的颜色值,后面的格式为第一个坐标的偏移坐标加上颜色值
比色的格式是坐标值加上颜色值

上代码~
[hide]Dim 范围 = Array(295,1088,393,1126) //设定我们取色的范围 不建议范围太大 太小~
Dim 中心坐标 = Array(346,1106) //设定取色中心点 可用作后续的点击
Dim 唯一特征差值 = 2 //有些情况下唯一颜色太少了,需要设置大一点,不过唯一颜色数据越多找得越准确
Dim 找色范围扩大值 = 50 //自动生成的找色范围值,注意不要超过屏幕范围

Dim 比色底色 = Array()
Dim 找色底色 = Array()
Dim 底色取值 = 0
Dim 已随机列表()

Dim result = EnableFastCapture(true)
If result Then
TracePrint “快速取色开启”
End If

KeepCapture //截取屏幕

For i = 范围(0) To 范围(2)
For k = 范围(1) To 范围(3) //双循环遍历每个点的图色数据
Dim rColor = GetPixelColor(i, k,0)
Dim 颜色数量 = GetColorNum(范围(0), 范围(1), 范围(2), 范围(3), rColor, 1.0)
If 颜色数量 < 唯一特征差值 Then
//TracePrint “这个点的颜色为:” & rColor
比色底色(底色取值) = i & “|” & k & “|” & rColor
找色底色(底色取值) = 坐标计算(中心坐标(0), i) & “|” & 坐标计算(中心坐标(1), k) & “|” & rColor
底色取值 = 底色取值 + 1
End If
Next
Next

ReleaseCapture //释放屏幕

TracePrint 比色数据(10)

TracePrint 找色数据(10)

TracePrint 范围(0) - 找色范围扩大值 & “,” & 范围(1) - 找色范围扩大值 & “,” & 范围(2) + 找色范围扩大值 & “,” & 范围(3) + 找色范围扩大值 & “,” & 找色数据(10)

Function 坐标计算(锚定坐标, 相差坐标)
坐标计算 = 相差坐标 - 锚定坐标
End Function

Function 比色数据(特征次数)
比色数据 = “”
Dim 随机数, 比色列 = “”
For i = 0 To 特征次数 - 1
随机数 = 生产随机数(0, UBOUND(比色底色))
If 检测是否重复(随机数) <> “” Then
If i = 特征次数 - 1 Then
比色列 = 比色列 & 比色底色(随机数)
Else
比色列 = 比色列 & 比色底色(随机数) & “,”
End If

End If
Next
比色数据 = “”"" & 比色列 & “”""
End Function

Function 找色数据(特征次数)
找色数据 = “”
Dim 随机数, 找色列 = “”
For i = 0 To 特征次数 - 1
随机数 = 生产随机数(0, UBOUND(找色底色))
If 检测是否重复(随机数) <> “” Then
If i = 特征次数 - 1 Then
找色列 = 找色列 & 找色底色(随机数)
Else
找色列 = 找色列 & 找色底色(随机数) & “,”
End If

End If
Next
找色数据 = “”"" & GetPixelColor(中心坐标(0), 中心坐标(1),0) & “”",""" & 找色列 & “”""
End Function

Function 生产随机数(i, j)
生产随机数 = Int((j - i + 1) * Rnd() + i)
End Function

Function 检测是否重复(数据)
检测是否重复 = “”
For i = 0 To UBound(已随机列表)
If 数据 = 已随机列表(i) Then
TracePrint “重复”
Exit Function
End If
Next
检测是否重复 = 数据
End Function[/hide]
复制代码
好啦,现在设定范围和坐标就可以愉快的让脚本帮你取最优的特征了配合GK插件食用更方便

题外话,可以自己写个插件输出去掉烦人的脚本提示,插件代码如下:
[hide]function QMPlugin.TracePrint(…)
LuaAuxLib.TracePrint(…)
end[/hide]
复制代码
替换上面安卓取色找色代码输出的 TracePrint 就可以了~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值