使用图色技术来实现自动化脚本 在移动端自动化开发领域无障碍控件识别、OCR 文字识别、图色视觉识别是三大主流定位方案。其中无障碍识别依赖应用 UI 控件树一旦目标应用加固、限制无障碍服务脚本就会直接失效OCR 仅能处理文字类界面元素而图色识别基于屏幕像素图像分析不依赖应用底层架构是游戏界面、封闭工具类 App、无标准控件弹窗等场景下最稳定的兜底方案。本文从底层原理、API 分层使用、实战开发、性能优化、常见坑点五个维度完整讲解图色脚本开发思路。一、图色脚本前置基础截屏权限与生命周期管理所有图色相关函数存在统一前置约束调用任意取色、找色、找图接口前必须完成截屏权限申请这是安卓系统底层屏幕捕获机制的硬性限制也是新手最容易踩坑的基础问题。1. 权限申请核心函数 requestScreenShotrequestScreenShot是图色脚本的入口函数建议放置在脚本main函数最顶部。该函数用于弹出系统截屏授权弹窗支持自动点击确认按钮适配不同手机系统弹窗文字差异。 函数核心参数包含三部分confirmPermissionTag授权弹窗确认按钮文本支持|分隔多组文字自动匹配点击retryCount自动点击重试次数默认 5 次适配弹窗延迟弹出场景usePreBitmap缓存上一帧截图屏幕无变化时复用位图大幅降低重复截图性能损耗。基础标准初始化代码如下function main() { // 自动识别“允许/立即开始”弹窗重试3次开启截图缓存 requestScreenShot({confirmPermissionTag:允许|立即开始, retryCount:3, usePreBitmap:true}); // 后续所有图色逻辑 }文档明确标注关键注意事项若冰狐 App 未处于前台截屏会出现黑屏、授权失败脚本运行结束、长时间暂停截图时可调用stopScreenShot释放截屏服务资源如需再次使用图色功能必须重新执行requestScreenShot申请权限无法直接复用缓存。2. Bitmap 位图内存生命周期管理冰狐所有截图、图像处理接口都会返回Bitmap位图对象位图存储屏幕完整像素数据1080P 屏幕单张位图内存占用可达 8MB 以上频繁创建不释放会直接触发 OOM 内存溢出、脚本闪退。平台官方文档强制要求所有手动获取的 Bitmap 使用完毕后必须调用.recycle()释放本地内存。两种典型位图释放场景直接截屏返回位图let bmp screenShot(); // 无fileName参数返回位图 // 图像处理逻辑 bmp.recycle(); // 用完立即释放图像预处理生成新位图灰度、二值化、裁剪let originBmp screenShot(); let grayBmp image2Gray(originBmp); // 生成灰度图 writeImage(grayBmp, /sdcard/aznfz/gray.png); // 双重释放原图与处理后位图 originBmp.recycle(); grayBmp.recycle();很多新手会忽略裁剪、灰度转换生成的衍生位图仅释放原始截图长期循环运行脚本会持续堆积内存出现卡顿、黑屏崩溃这是图色脚本稳定性的核心优化点。二、冰狐图色 API 分层拆解从基础取色到图像匹配平台图色接口按照使用场景分为四层基础截图存储、单点像素取色、批量颜色检索、模板图像匹配每一层接口对应不同业务场景合理选择接口能大幅提升脚本运行效率。一基础截图与文件操作screenShot、writeImage、readImagescreenShot是截屏核心接口分为两种工作模式传入fileName参数直接将截图保存为图片文件返回文件绝对路径无需手动释放位图适合留存日志截图不传入文件名返回 Bitmap 对象用于实时图像识别必须手动回收内存。接口支持区域截图、画质压缩、格式切换region参数同时支持像素值与屏幕比例两种输入[0,0,1,1]代表全屏[0.2,0.3,0.6,0.5]代表截取屏幕横向 20%~60%、纵向 30%~50% 区域完美适配多分辨率手机适配需求。截图保存后若需要在手机相册查看必须调用updatePhotoAlbum更新相册索引否则系统相册无法识别新增图片文件这是安卓媒体存储机制的通用限制。二像素级取色getScreenColor、compareColorsgetScreenColor单点 / 多点实时取色返回 ARGB 格式整型颜色值黑色固定为0xFF000000支持一次性批量获取多个坐标像素适合状态判断场景。例如检测按钮是否点亮、弹窗是否消失无需完整截图检索性能损耗极低。// 同时获取两个坐标颜色 let colors getScreenColor([[500, 1200],[600,1200]]); console.log(像素颜色数组, colors);compareColors定点多颜色校验传入一组坐标 目标颜色数组全部匹配返回 true任意一点颜色不符返回 false。该接口适合固定分辨率设备的精准校验但兼容性较差 —— 更换不同尺寸手机后像素坐标偏移匹配直接失效官方文档明确区分固定设备使用compareColors多设备兼容场景优先使用findColor找色接口。三批量颜色检索findColor、findColors脚本最常用接口找色是自动化脚本的核心定位手段原理是在指定屏幕区域内遍历像素匹配相似度范围内的目标色返回全部匹配坐标支持周边特征色校验识别准确率远高于单纯单点对比。核心优势多分辨率自适应region参数支持比例数值无需修改坐标即可适配不同尺寸手机similarity相似度参数 0~1 可调0.9 为通用推荐值应对屏幕色温、亮度差异导致的轻微色偏。neighbor 相邻特征色参数提升识别抗干扰能力单纯依靠单一颜色极易出现误识别页面大量同色系像素会造成坐标错乱。neighbor参数可配置目标点周边偏移坐标的参考色只有目标色 周边特征色同时匹配才判定为有效目标完美解决页面重复色块干扰问题。findColors是多类别批量找色扩展接口可一次性传入多组目标颜色每组绑定自定义分类与数值返回结果携带分类标识适合一页内同时识别多种按钮、道具、弹窗减少多次截屏检索的性能开销。四模板图像匹配findImage 图像找图当目标元素无独特区分色复杂图标、渐变按钮、游戏人物模型颜色匹配失效时使用findImage模板匹配。支持三种模板图片路径本地绝对路径、相对存储目录、打包进 App 的 asset 资源文件。 关键优化参数scale开启缩放匹配适配不同分辨率图标缩放差异threshold匹配阈值 0.85 为默认值图标边缘清晰可上调至 0.9模糊渐变素材降低至 0.8。 文档补充说明单张简单图标使用 findImage 即可多图同时识别、高精度游戏画面识别推荐平台内置 YoloV8 模型识别速度与抗干扰能力更强。五图像预处理工具链平台配套灰度化image2Gray、二值化imageThreshold、位图裁剪bitmapClip、字节互转等底层图像处理接口用于复杂场景预处理灰度化去除色彩干扰降低图像数据量提升找图匹配速度二值化分割文字与背景配合自定义阈值过滤杂色bitmapClip 裁剪目标区域位图仅对局部图像检索减少计算量。三、完整实战脚本案例弹窗自动关闭逻辑结合全部基础 API编写一套通用弹窗检测自动化脚本覆盖权限初始化、区域找色、坐标点击、内存释放全流程代码遵循官方规范兼顾稳定性与性能function main() { // 1. 初始化截屏权限 requestScreenShot({confirmPermissionTag:允许|立即开始, retryCount:3}); while(true) { // 2. 在屏幕上半区查找关闭按钮特征色搭配周边校验色 let closePoints findColor(#FF3333, { similarity:0.9, findAll:false, region:[0,0,1,0.5], // 仅检索屏幕上半部分缩小检索范围 neighbor:[[5,0,#FFFFFF],[0,5,#CCCCCC]] }); if(closePoints.length 0) { // 找到弹窗关闭按钮执行点击 let target closePoints[0]; click(target.x, target.y); sleep(800); // 模拟真人操作延迟避免风控 } else { // 无弹窗休眠后循环检测 sleep(1200); } } }该脚本循环检索页面弹窗通过限定检索区域减少图像计算量搭配 neighbor 特征色避免误触其他红色图标全程无需手动保存位图由 findColor 内部自动管理截图缓存长期运行内存占用稳定。四、图色脚本性能与兼容性优化方案1. 性能优化减少图像计算开销限定检索区域所有findColor、findImage必须配置region参数避免全屏遍历像素检索速度提升 50% 以上复用截图缓存requestScreenShot开启usePreBitmap:true屏幕无变化时复用位图避免重复截屏减少循环内频繁截屏单次截图完成后统一处理所有找色逻辑不要每一次找色都重新截屏及时释放 Bitmap手动创建的位图必须执行recycle()杜绝内存泄漏。2. 多设备兼容性优化颜色相似度适配浅色屏幕、高亮度设备色偏明显相似度建议设置 0.85~0.9不要固定 1.0 完全匹配优先使用比例区域region使用 0~1 比例数值而非固定像素坐标手机分辨率变更无需修改代码找色优先于定点比色跨设备脚本禁用compareColors定点校验统一使用findColor动态检索坐标模板图标精简裁剪制作找图素材时仅截取图标主体减少多余背景降低分辨率缩放带来的匹配误差。3. 稳定性优化规避系统限制前台运行冰狐 App后台休眠会导致截屏黑屏、权限丢失长周期脚本保持应用前台合理添加操作延时真人操作存在随机间隔固定无延迟点击易被应用风控检测每次操作增加 500~1500ms 随机休眠长时间闲置释放截屏脚本暂停超过 3 分钟调用stopScreenShot关闭截屏服务降低系统资源占用。五、开发高频问题与避坑总结截屏黑屏、找色无返回结果排查顺序是否在脚本顶部调用requestScreenShot→冰狐是否前台运行→系统截屏权限是否永久允许→关闭后台省电、内存清理策略。脚本运行一段时间闪退、卡顿核心原因 Bitmap 未释放所有 screenShot、image2Gray、bitmapClip 生成的位图必须执行recycle()循环脚本内不要持续创建无回收的位图对象。同一脚本在 A 手机正常、B 手机找不到目标一是使用固定像素坐标更换分辨率后偏移二是相似度设置过高屏幕色温差异导致颜色不匹配三是模板截图包含大量背景缩放后匹配度不足。保存截图相册不显示screenShot写入图片后调用updatePhotoAlbum(文件路径)刷新系统媒体库或保存至 DCIM 标准相册目录。stopScreenShot 后找色失效停止截屏服务后截屏缓存全部清空再次使用图色功能必须重新执行requestScreenShot申请权限。六、结语图色自动化是移动端自动化不可替代的技术方案尤其适配无控件、限制无障碍的封闭场景。冰狐智能辅助平台封装了成熟的底层图像算法将复杂的像素匹配、位图处理封装为简易 JS 接口降低了自动化开发门槛。但脚本稳定运行的核心不在于 API 调用而在于权限生命周期管理、内存资源回收、检索范围与相似度参数精细化调优。在实际开发中应当遵循 “无障碍优先、OCR 次之、图色兜底” 的分层定位思路仅当前两种方案失效时使用图色识别同时遵守设备使用规范仅用于个人设备测试、办公辅助等合法场景。吃透平台官方图色接口的参数逻辑与底层约束配合合理的代码优化习惯即可写出长期稳定、跨设备兼容的图色自动化脚本。