按键精灵ios脚本开发重要的图色相关的命令
FindPic
命令名称 | FindPic |
命令功能 | 查找指定的图片,支持多图、偏色、相似度查找,支持查找透明图,只返回第一个找到的坐标 |
命令参数 | x1:整数型,查找区域左上X坐标 |
返回值 | 返回找到的图片的序号,从0开始索引.如果没找到返回-1 |
找图命令的准备工作:
1. 把目标图片截取下, 并且保存成PNG格式的图片文件
2. 把图片添加到助手附件中,或者是放在手机的路径中
- Dim intX, intY
- //当图片在附件当中时:
- FindPic 0, 0, 0, 0, "Attachment:PIC.png","000000",0, 0.8, intX, intY
- If intX >-1 then
- TracePrint "找到啦,坐标是"&intX&","&intY
- Else
- TracePrint "没找到"
- End If
- //当图片是在手机的SD卡路径中时
- FindPic 0, 0, 0, 0, "/sdcard/PIC.png","000000",0, 0.8, intX, intY
- If intX >-1 then
- TracePrint "找到啦,坐标是"&intX&","&intY
- Else
- TracePrint "没找到"
- End If
复制代码透明图:
在找图命令中有个透明图的概念. 它其实就是指对要找的图片进行了一些特殊处理.
|
这个图片的四个角的颜色不一致,所以在找图的时候会当成普通的图片进行查找
这个图片中四个角的颜色都是黄色("FFE952") 所以按键在找图的时候会自动忽略掉这个黄色, 只对图片中的其他的颜色进行匹配.
透明图常常会被用于在一些背景会发生变化的场景中找特征.
SnapShot
命令名称 | SnapShot |
命令功能 | 截屏并保存为PNG文件 |
命令参数 | file_name:字符型,文件名(即截取范围图片后,要保存的路径) |
返回值 | 无 |
截图命令使用方法很简单, 可以截取整张屏幕保存成图片, 也可以支持截取部分屏幕保存成图片.
- //截图整个屏幕信息
- SnapShot "/sdcard/PIC.png"
- //截图部分屏幕
- SnapShot "/sdcard/PIC.png", 200, 300, 450, 600
- //连续截屏保存成不同的图片
- For i = 1 To 5
- SnapShot "/sdcard/PIC_" & i & ".png",200, 300, 450, 600
- Next
复制代码
KeepCapture\ReleaseCapture
命令名称 | KeepCapture |
命令功能 | 截取当前屏幕内容保留在内存,随后执行的图色函数均从内存中快速查找,直到用 ReleaseCapture 删除内存中的截图 |
命令参数 | 无 |
返回值 | 无 |
命令名称 | ReleaseCapture |
命令功能 | 释放(即删除)保留在内存中的屏幕内容截图 |
命令参数 | 无 |
返回值 | 无 |
这两个命令一般都是成对出现的. 利用好他们对于提升脚本找图找色的效率有很大的帮助
在按键机制中在运行到找图找色命令的时候就会自动截取屏幕的信息. 所以当你循环找多个特征的时候就会发现效率很慢.
我们可以通过一个简单的代码来测试下效率
- Dim intX,intY
- Dim t=TickCount()
- For 50
- FindMultiColor 349,705,488,836, "6363F1","-41|27|97E6F6,-72|-8|84D5BA,-40|-61|EFF3F2", 0, 0.9, intX, intY
- If intX > -1 And intY > -1 Then
- End If
- Next
- TracePrint TickCount()-t
复制代码通过运行上面代码我们可以得到在找色50次所花费的时间大概在1500ms左
右. 这单独看起来可能没什么. 但是放在实际的脚本中就会很影响比较的效率了.
我们再来看下使用了截图至内存命令之后的效率
- Dim intX,intY
- Dim t=TickCount()
- KeepCapture
- For 50
- FindMultiColor 349,705,488,836, "6363F1","-41|27|97E6F6,-72|-8|84D5BA,-40|-61|EFF3F2", 0, 0.9, intX, intY
- If intX > -1 And intY > -1 Then
- End If
- Next
- ReleaseCapture
- TracePrint TickCount()-t
复制代码最终输出的所花费的时间不到100ms. 这就是效率上的差距.
在没使用截图至内存的命令之前, 每次找色的时候都会自动截屏一次, 循环50次就相当于截屏了50次. 所以耗费时间就多. 当在循环开始前使用KeepCapture
命令, 就是把当前屏幕的像素信息先收集到内存中, 之后的找色命令全部由内存里取 不会再截取屏幕,所以找色就会快很多了.
|
探索按键精灵的多样自动化脚本选择,包括iOS越狱版和免越狱版,涵盖了iOS和安卓系统的各种脚本,正在适配最新的iOS 15和iOS 16系统版本。同时,鹰眼软件提供手机群控、微信群控、游戏群控、手机投屏、手机云控以及电脑远程控制手机功能,为您的操作体验增添更多的趣味与便利!