基于AutoJs史上最NB的找图方法

到底NB不NB自己看就知道了。当然素材得你自己准备,j就算分辨率机型都不一样,咱也照样找。

我先贴方法之后在解释参数:

/**
 * 找图,找到并点击
 * @param {可以是数组也可以是字符串,传输数组可以多次找图知道找到为止} img_path_array 
 * @param {找图区域,默认是全屏找图,该参数可以不传输} area_region 
 * @param {相似度,默认是0.8,可以不传输} threshold 
 * @returns true表示执行成功Flase表示失败
 */
function clickAreaForFindImage(img_path_array, area_region, threshold) {
    try {
        area_region = area_region || [0, 0, device.width, device.height] //默认的找图区域 全屏找图 前2位是坐标 后面是长度和宽度   千万别理解成是坐标
        threshold = threshold || 0.8 // 默认的相识度0.8
        if (img_path_array instanceof Array) {
            let arrayLength = img_path_array.length
            for (let i = 0; i < arrayLength; i++) {
                toastLog("正在进行第" + (i + 1) + "次找图...")
                img_path = img_path_array[i] //小图地址可判断是否存在
                if (!files.exists(img_path)) {
                    toastLog(img_path + "文件不存在因此跳过")
                    continue
                }
                var little_image = images.read(img_path) //小图
                var find_result_bounds = findImage(
                    captureScreen(), little_image, {
                    region: area_region,
                    threshold: threshold
                });
                toastLog(find_result_bounds)
                if (find_result_bounds) {
                    toastLog("准备点击:" + find_result_bounds)
                    click(find_result_bounds.x, find_result_bounds.y)
                    return true
                } else {
                    toastLog("小图存在但是在大图中未找到图片")
                    return false
                }
            }
        }
        if (typeof (img_path_array) == "string") {
            img_path = img_path_array//小图地址可判断是否存在
            if (!files.exists(img_path)) {
                toastLog(img_path + "文件不存在因此跳过")
                return false
            }
            var little_image = images.read(img_path) //小图
            var find_result_bounds = findImage(
                captureScreen(), little_image, {
                region: area_region,
                threshold: threshold
            });
            toastLog(find_result_bounds)
            if (find_result_bounds) {
                toastLog("准备点击:" + find_result_bounds)
                click(find_result_bounds.x, find_result_bounds.y)
                return true
            } else {
                toastLog("小图存在但是在大图中未找到图片")
                return false
            }
        }
    } catch (error) {
        toastLog("clickAreaForFindImage方法出现错误:" + error)
        return false;
    }
}

封装了史上最NB的找图函数clickAreaForFindImage(img_path_array, area_region, threshold) 

 1 第一个参数可以是数组也可以是字符串,传输数组可以多次找图知道找到为止

 2 第二个参数是找图区域,默认是全屏找图,该参数可以不传输

 3 第三个参数是相识度,默认是0.8,可以不传输

直接判断是否成功完了就可以下一步操作了 示例代码

requestScreenCapture();

see_video_image = ["./FindImage/成语大家族/看视频抢红包1.png", "./FindImage/成语大家族/看视频抢红包2.png"]
//see_video_image = "./FindImage/成语大家族/看视频抢红包2.png"
area_region = [0, device.height / 2, device.width, device.height / 2]
if (clickAreaForFindImage(see_video_image, area_region)) {
    //干点啥
}

我提供了2个参数

第一个是小图地址的数组第二个是区域,第一个参数也可以是字符串的小图地址。

拿去用吧...

到底NB不NB自己看就知道了。当然素材得你自己准备,j就算分辨率机型都不一样,咱也照样找。

我先贴方法之后在解释参数:

/**
 * 找图,找到并点击
 * @param {可以是数组也可以是字符串,传输数组可以多次找图知道找到为止} img_path_array 
 * @param {找图区域,默认是全屏找图,该参数可以不传输} area_region 
 * @param {相似度,默认是0.8,可以不传输} threshold 
 * @returns true表示执行成功Flase表示失败
 */
function clickAreaForFindImage(img_path_array, area_region, threshold) {
    try {
        area_region = area_region || [0, 0, device.width, device.height] //默认的找图区域 全屏找图 前2位是坐标 后面是长度和宽度   千万别理解成是坐标
        threshold = threshold || 0.8 // 默认的相识度0.8
        if (img_path_array instanceof Array) {
            let arrayLength = img_path_array.length
            for (let i = 0; i < arrayLength; i++) {
                toastLog("正在进行第" + (i + 1) + "次找图...")
                img_path = img_path_array[i] //小图地址可判断是否存在
                if (!files.exists(img_path)) {
                    toastLog(img_path + "文件不存在因此跳过")
                    continue
                }
                var little_image = images.read(img_path) //小图
                var find_result_bounds = findImage(
                    captureScreen(), little_image, {
                    region: area_region,
                    threshold: threshold
                });
                toastLog(find_result_bounds)
                if (find_result_bounds) {
                    toastLog("准备点击:" + find_result_bounds)
                    click(find_result_bounds.x, find_result_bounds.y)
                    return true
                } else {
                    toastLog("小图存在但是在大图中未找到图片")
                    return false
                }
            }
        }
        if (typeof (img_path_array) == "string") {
            img_path = img_path_array//小图地址可判断是否存在
            if (!files.exists(img_path)) {
                toastLog(img_path + "文件不存在因此跳过")
                return false
            }
            var little_image = images.read(img_path) //小图
            var find_result_bounds = findImage(
                captureScreen(), little_image, {
                region: area_region,
                threshold: threshold
            });
            toastLog(find_result_bounds)
            if (find_result_bounds) {
                toastLog("准备点击:" + find_result_bounds)
                click(find_result_bounds.x, find_result_bounds.y)
                return true
            } else {
                toastLog("小图存在但是在大图中未找到图片")
                return false
            }
        }
    } catch (error) {
        toastLog("clickAreaForFindImage方法出现错误:" + error)
        return false;
    }
}

封装了史上最NB的找图函数clickAreaForFindImage(img_path_array, area_region, threshold) 

 1 第一个参数可以是数组也可以是字符串,传输数组可以多次找图知道找到为止

 2 第二个参数是找图区域,默认是全屏找图,该参数可以不传输

 3 第三个参数是相识度,默认是0.8,可以不传输

直接判断是否成功完了就可以下一步操作了 示例代码

requestScreenCapture();

see_video_image = ["./FindImage/成语大家族/看视频抢红包1.png", "./FindImage/成语大家族/看视频抢红包2.png"]
//see_video_image = "./FindImage/成语大家族/看视频抢红包2.png"
area_region = [0, device.height / 2, device.width, device.height / 2]
if (clickAreaForFindImage(see_video_image, area_region)) {
    //干点啥
}

我提供了2个参数

第一个是小图地址的数组第二个是区域,第一个参数也可以是字符串的小图地址。

拿去用吧...

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在