易语言使用大漠插件实现内存找图

前言

最近在开发IOS的免越狱测试中,需要实现找图功能。
开始用的是OpenCV找图。
由于这个dll比较小众,以及其他的原因,总觉得不好用。

于是写了个大漠内存找图的Demo。
内存找图几年前写过,忘记是用易语言还是按键精灵写的。
记得还封装了一些找图函数。
但是时间久了,找不到源码了。
没办法,只好重新写。

图片资源

总共需要两张图片。
一张大图,一张小图。
我们要把大图和小图都加载到内存中,然后在大图里找小图。

file

源码

.版本 2
.支持库 spec

.程序集 窗口程序集_启动窗口
.程序集变量 dm, 大漠英文版72336

.子程序 __启动窗口_创建完毕

dm.创建 ()  ' ' 这个对象必须全程保持
.如果真 (dm.Reg (#注册码, #附加码) = 1)  ' ' 收费注册
    调试输出 (“图色插件注册成功”, dm.Ver ())
.如果真结束

' 这里可以做一些初始化设定
' 比如开启保护盾,设置全局字库等

dm.SetPath (取运行目录 () + “\Res”)

子程序_内存找图 ()

.子程序 _按钮1_被单击

子程序_内存找图 ()

.子程序 子程序_内存找图
.局部变量 dm_ret, 整数型
.局部变量 局_大图数据, 字节集
.局部变量 mem, 文本型
.局部变量 pic_info, 文本型
.局部变量 局_找图结果, 文本型
.局部变量 局_结果数组, 文本型, , "0"
.局部变量 局_大图地址, 文本型
.局部变量 i, 整数型
.局部变量 局_坐标信息, 文本型, , "0"
.局部变量 局_小图信息, 类_小图信息
.局部变量 start, 整数型

' // 设置为图片模式,图片从内存中获取
start = 取启动时间 ()

局_大图地址 = “Res” + “\” + “temp_1.jpg”
.判断开始 (文件_是否存在 (局_大图地址))
    局_大图数据 = 读入文件 (局_大图地址)
    .判断开始 (取字节集长度 (局_大图数据) > 1000)
        mem = 到文本 (取变量数据地址 (局_大图数据)) + “,” + 到文本 (取字节集长度 (局_大图数据))

        ' 指定输入模式为指定的图片,此图片在内存当中. addr为图像内存地址,size为图像内存大小.
        ' 如果使用了这个模式,则所有和图色相关的函数,均视为对此图片进行处理.
        ' 比如文字识别 查找图片 颜色 等等一切图色函数.
        dm_ret = dm.SetDisplayInput (“mem:” + mem)
        .如果真 (dm_ret > 0)
            ' 调试输出 (dm.GetColor (30, 30))

            局_小图信息.path = “Res” + “\” + “photo.bmp”
            .判断开始 (文件_是否存在 (局_小图信息.path))
                局_小图信息.data = 读入文件 (局_小图信息.path)
                .判断开始 (取字节集长度 (局_小图信息.data) > 1000)
                    局_小图信息.addr = 取变量数据地址 (局_小图信息.data)
                    局_小图信息.size = 取字节集长度 (局_小图信息.data)
                    pic_info = dm.AppendPicAddr (pic_info, 局_小图信息.addr, 局_小图信息.size)

                    局_找图结果 = dm.FindPicMemEx (0, 0, 图片_取宽度 (局_大图数据), 图片_取高度 (局_大图数据), pic_info, “020202”, 0.8, 0)
                    调试输出 (“大漠内存找图耗时”, 四舍五入 ((取启动时间 () - start) ÷ 1000, 3))

                    局_结果数组 = 分割文本 (局_找图结果, “|”, )
                    .计次循环首 (取数组成员数 (局_结果数组), i)
                        局_坐标信息 = 分割文本 (局_结果数组 [i], “,”, )  ' 0,192,202”
                        局_小图信息.index = 到整数 (局_坐标信息 [1])
                        .如果真 (局_小图信息.index ≥ 0)
                            局_小图信息.x = 到整数 (局_坐标信息 [2])
                            局_小图信息.y = 到整数 (局_坐标信息 [3])
                            局_小图信息.width = 图片_取宽度 (局_小图信息.data)
                            局_小图信息.height = 图片_取高度 (局_小图信息.data)
                            局_小图信息.centerX = 局_小图信息.x + 局_小图信息.width ÷ 2
                            局_小图信息.centerY = 局_小图信息.y + 局_小图信息.height ÷ 2
                            局_小图信息.name = 文件_取文件名 (局_小图信息.path)

                            调试输出 (局_小图信息.name, 局_小图信息.index, 局_小图信息.x, 局_小图信息.y, 局_小图信息.width, 局_小图信息.height, 局_小图信息.centerX, 局_小图信息.centerY)

                        .如果真结束

                    .计次循环尾 ()

                .默认

                .判断结束

            .默认

            .判断结束

        .如果真结束

    .默认

    .判断结束

.默认

.判断结束

另外,飞云创建了一个自定义的数据类型

.版本 2

.数据类型 类_小图信息
    .成员 path, 文本型, , , 本地路径
    .成员 data, 字节集
    .成员 name, 文本型, , , 文件名
    .成员 addr, , , , 内存数据地址
    .成员 size, , , , 数据长度
    .成员 width, , , , 宽度
    .成员 height, , , , 高度
    .成员 index, , , , 找到的索引
    .成员 x, , , , 左上x
    .成员 y, , , , 左上y
    .成员 centerX
    .成员 centerY

测试结果

大图的尺寸是375×667 px
实测第一次找图耗时0.03秒。
猜测是因为首次需要将图片加载到内存,所以花费的时间长一些。
后面每次找,大概耗时0.015秒左右。
也就是1毫秒多点。
找图的速度还是很不错的。

运行日志:

[00:58:07] * “大漠内存找图耗时” | 0.032000
[00:58:07] * “photo” | 0 | 192 | 202 | 65 | 67 | 224 | 235
[00:58:08] * “大漠内存找图耗时” | 0.016000
[00:58:08] * “photo” | 0 | 192 | 202 | 65 | 67 | 224 | 235
[00:58:09] * “大漠内存找图耗时” | 0.015000
[00:58:09] * “photo” | 0 | 192 | 202 | 65 | 67 | 224 | 235
[00:58:09] * “大漠内存找图耗时” | 0.016000
[00:58:09] * “photo” | 0 | 192 | 202 | 65 | 67 | 224 | 235
[00:58:10] * “大漠内存找图耗时” | 0.016000
[00:58:10] * “photo” | 0 | 192 | 202 | 65 | 67 | 224 | 235
[00:58:11] * “大漠内存找图耗时” | 0.031000
[00:58:11] * “photo” | 0 | 192 | 202 | 65 | 67 | 224 | 235
[00:58:11] * “大漠内存找图耗时” | 0.031000
[00:58:11] * “photo” | 0 | 192 | 202 | 65 | 67 | 224 | 235
[00:58:12] * “大漠内存找图耗时” | 0.016000
[00:58:12] * “photo” | 0 | 192 | 202 | 65 | 67 | 224 | 235
1. 官方交流QQ群,添加多个不批。建议使用安卓手机或电脑申请。
Auto.js学习交流③群:286635606
Auto.js学习交流②群:712194666(满员)
IOS免越狱自动化测试群:691997586
EasyClick学习交流①群:737066890
2. 盗版,破解有损他人权益和违法作为,请各位会员支持正版。
3. 本站部分资源来源于用户上传和网络搜集,如有侵权请提供版权证明并联系站长删除。
4.如未特别申明,本站的技术性文章均为原创,未经授权,禁止转载/搬运等侵权行为。
5.全站所有付费服务均为虚拟商品,购买后自动发货。售出后概不接受任何理由的退、换。注册即为接受此条款。
6.如果站内内容侵犯了您的权益,请联系站长删除。
飞云脚本 » 易语言使用大漠插件实现内存找图

企业级大数据智能营销管理系统

了解详情