• 按键公众号 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:2021-12-03

按键精灵安卓版
立即下载

软件版本:3.7.2
软件大小:46.2M
更新时间:2023-05-10

按键精灵iOS版
立即下载

软件版本:1.8.0
软件大小:29.2M
更新时间:2023-03-21

按键手机助手
立即下载

软件版本:3.8.0
软件大小:262M
更新时间:2023-05-30

快捷导航

登录 后使用快捷导航
没有帐号? 注册

发新话题 回复该主题

安卓按键精灵自动取色(可用于比色,多点找色,找图实现) [复制链接]

1#
点击关闭鉴定图章
第一次发帖,没什么经验,排版可能没那么好看~
安卓按键精灵大家都知道脚本找色比色会比找图更快,但是一个点一个点的手动取色也太麻烦了~
于是有了这个自动取色教程(说不准以后就是脚本自动写脚本了

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

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



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

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

  5. Dim 比色底色 = Array()
  6. Dim 找色底色 = Array()
  7. Dim 底色取值 = 0
  8. Dim 已随机列表()

  9. Dim result = EnableFastCapture(true)
  10. If result Then
  11. TracePrint "快速取色开启"
  12. End If

  13. KeepCapture //截取屏幕

  14. For i = 范围(0) To 范围(2)
  15. For k = 范围(1) To 范围(3) //双循环遍历每个点的图色数据
  16. Dim rColor = GetPixelColor(i, k,0)
  17. Dim 颜色数量 = GetColorNum(范围(0), 范围(1), 范围(2), 范围(3), rColor, 1.0)
  18. If 颜色数量 < 唯一特征差值 Then
  19. //TracePrint "这个点的颜色为:" & rColor
  20. 比色底色(底色取值) = i & "|" & k & "|" & rColor
  21. 找色底色(底色取值) = 坐标计算(中心坐标(0), i) & "|" & 坐标计算(中心坐标(1), k) & "|" & rColor
  22. 底色取值 = 底色取值 + 1
  23. End If
  24. Next
  25. Next

  26. ReleaseCapture //释放屏幕

  27. TracePrint 比色数据(10)

  28. TracePrint 找色数据(10)

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

  30. Function 坐标计算(锚定坐标, 相差坐标)
  31. 坐标计算 = 相差坐标 - 锚定坐标
  32. End Function

  33. Function 比色数据(特征次数)
  34. 比色数据 = ""
  35. Dim 随机数, 比色列 = ""
  36. For i = 0 To 特征次数 - 1
  37. 随机数 = 生产随机数(0, UBOUND(比色底色))
  38. If 检测是否重复(随机数) <> "" Then
  39. If i = 特征次数 - 1 Then
  40. 比色列 = 比色列 & 比色底色(随机数)
  41. Else
  42. 比色列 = 比色列 & 比色底色(随机数) & ","
  43. End If

  44. End If
  45. Next
  46. 比色数据 = """" & 比色列 & """"
  47. End Function

  48. Function 找色数据(特征次数)
  49. 找色数据 = ""
  50. Dim 随机数, 找色列 = ""
  51. For i = 0 To 特征次数 - 1
  52. 随机数 = 生产随机数(0, UBOUND(找色底色))
  53. If 检测是否重复(随机数) <> "" Then
  54. If i = 特征次数 - 1 Then
  55. 找色列 = 找色列 & 找色底色(随机数)
  56. Else
  57. 找色列 = 找色列 & 找色底色(随机数) & ","
  58. End If

  59. End If
  60. Next
  61. 找色数据 = """" & GetPixelColor(中心坐标(0), 中心坐标(1),0) & """,""" & 找色列 & """"
  62. End Function

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

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

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

点评

果壳王子  恭喜为位同学喜提"教程达人"勋章一枚  发表于 2021/11/19 10:40:31

    已有1评分我要评分查看所有评分

    最后编辑li20120501 最后编辑于 2021-11-24 14:27:55
    本主题由 按键精灵总策划 果壳王子 于 2021/11/24 15:00:44 执行 审核主题 操作
    2#

    值得学习

    承接各类游戏脚本制作,post,手游,端游,办公,自动化

    有偿解决任何按键基础问题(可远程讲解、教会为止)

    如果我的回答能帮助了你,大家可以加个好友互相了解
    QQ : 262832680
    3#

    666666

    4#


    5#

    非常优秀的工具型代码

    扫码免费获取我的基础教程【视频教程】
    扫码下方二维码关注我的公众号:3分钟学堂

    QQ交流群:936858410
    6#

    回复 5楼郭立员的帖子

    谢谢大佬的赞誉,只是一个偷懒的思路分享呢~

    7#

    回复 6楼li20120501的帖子

    文章转发到我的公众号,可以吗?

    扫码免费获取我的基础教程【视频教程】
    扫码下方二维码关注我的公众号:3分钟学堂

    QQ交流群:936858410
    8#

    回复 7楼郭立员的帖子

    当然没有问题~

    9#

    这个牛掰啦

    10#

    值得学习

    11#

    值得学习

    12#

    取出来的颜色都是00000求大佬指导一下

    13#

    ,

    注意看一下是不是范围内只有纯黑的颜色呢

    14#

    ,

    只有颜色数少的 能提取成功 颜色复杂的我调了特征码也不行都是0

    15#

    ,

    如果你需要帮助,可以加我QQ联系我给你远程调试一下

    16#

    谢谢分享

    17#

    小白学习

    发新话题 回复该主题