信息发布软件,b2b软件,广告发布软件

 找回密码
 立即注册
搜索
查看: 1|回复: 0
打印 上一主题 下一主题

[宣传软件网站动态] 安卓脚本示例实时截图判断页面变化

[复制链接]

1908

主题

1918

帖子

1万

积分

积分
11170

资讯缩略图:

资讯发布日期:2026-04-23

资讯发布简介:安卓脚本示例实时截图判断页面变化

资讯关键词:安卓脚本示例实时截图判断页面变化

资讯所属分类:IT资讯 SEO资讯 

联系:

① 本信息收集于网络,如有不对的地方欢迎联系我纠正!
② 本信息免费收录,不存在价格的问题!
③ 如果您的网站也想这样出现在这里,请您加好友情链接,我当天会审核通过!

④友情链接关键字:软件网站分类目录 网址:http://www.postbbs.com/

资讯详细描述
安卓脚本示例实时截图判断页面变化


安卓脚本示例实时截图判断页面变化 b2b软件

  1. // 实时截图判断页面变化示例
  2. // 技术交流QQ群711841924群一,苹果内测群,528816639
  3. // 采用全屏高采样率像素对比,间隔5秒检测

  4. /**
  5. * 截取当前屏幕并保存为Mat对象
  6. * @returns {Object} Mat对象,失败返回null
  7. */
  8. function captureScreen() {
  9.     try {
  10.         // 获取屏幕尺寸
  11.         var screenWidth = 1080;
  12.         var screenHeight = 1920;
  13.         
  14.         if (typeof screen !== 'undefined') {
  15.             if (typeof screen.getScreenWidth === 'function') {
  16.                 screenWidth = screen.getScreenWidth();
  17.                 screenHeight = screen.getScreenHeight();
  18.             }
  19.         }
  20.         
  21.         printl("截取屏幕: " + screenWidth + "x" + screenHeight);
  22.         var screenshot = screen.screenShot(screenWidth, screenHeight, 100);
  23.         return screenshot.getMat();
  24.     } catch (e) {
  25.         printl("截图失败: " + String(e));
  26.         return null;
  27.     }
  28. }

  29. /**
  30. * 比较两个Mat对象的相似度(通过像素点采样)
  31. * @param {Object} mat1 - 第一个Mat对象
  32. * @param {Object} mat2 - 第二个Mat对象
  33. * @param {number} sampleRate - 采样率(0-1),默认0.2表示采样20%的像素
  34. * @returns {number} 相似度(0-1),1表示完全相同
  35. */
  36. function compareMats(mat1, mat2, sampleRate) {
  37.     if (!mat1 || !mat2) {
  38.         printl("ERR: Mat对象为空,无法比较");
  39.         return 0;
  40.     }
  41.    
  42.     try {
  43.         sampleRate = sampleRate || 0.2; // 提高默认采样率到20%
  44.         
  45.         var width1 = mat1.width();
  46.         var height1 = mat1.height();
  47.         var width2 = mat2.width();
  48.         var height2 = mat2.height();
  49.         
  50.         printl("图片1尺寸: " + width1 + "x" + height1);
  51.         printl("图片2尺寸: " + width2 + "x" + height2);
  52.         
  53.         // 尺寸不同直接认为不同
  54.         if (width1 !== width2 || height1 !== height2) {
  55.             printl("⚠️ 图片尺寸不同,判定为页面已变化");
  56.             return 0;
  57.         }
  58.         
  59.         // 计算采样步长
  60.         var stepX = Math.floor(1 / sampleRate);
  61.         var stepY = Math.floor(1 / sampleRate);
  62.         
  63.         var totalPixels = 0;
  64.         var samePixels = 0;
  65.         var changedPixels = 0;
  66.         
  67.         // 采样比较像素点
  68.         for (var y = 0; y < height1; y += stepY) {
  69.             for (var x = 0; x < width1; x += stepX) {
  70.                 try {
  71.                     var pixel1 = mat1.get(y, x);
  72.                     var pixel2 = mat2.get(y, x);
  73.                     
  74.                     if (pixel1 && pixel2) {
  75.                         totalPixels++;
  76.                         
  77.                         // 比较RGB值(降低容差,提高灵敏度)
  78.                         var diff = Math.abs(pixel1[0] - pixel2[0]) +
  79.                                   Math.abs(pixel1[1] - pixel2[1]) +
  80.                                   Math.abs(pixel1[2] - pixel2[2]);
  81.                         
  82.                         // 降低阈值从30到10,更灵敏
  83.                         if (diff < 10) {
  84.                             samePixels++;
  85.                         } else {
  86.                             changedPixels++;
  87.                         }
  88.                     }
  89.                 } catch (e) {
  90.                     // 忽略单个像素读取错误
  91.                 }
  92.             }
  93.         }
  94.         
  95.         if (totalPixels === 0) {
  96.             printl("ERR: 没有可比较的像素点");
  97.             return 0;
  98.         }
  99.         
  100.         var similarity = samePixels / totalPixels;
  101.         var changeRate = changedPixels / totalPixels;
  102.         
  103.         printl("采样像素总数: " + totalPixels);
  104.         printl("相似像素数: " + samePixels);
  105.         printl("变化像素数: " + changedPixels);
  106.         printl("变化率: " + (changeRate * 100).toFixed(2) + "%");
  107.         printl("相似度: " + (similarity * 100).toFixed(2) + "%");
  108.         
  109.         return similarity;
  110.     } catch (e) {
  111.         printl("ERR: 比较Mat对象错误: " + String(e));
  112.         return 0;
  113.     }
  114. }

  115. /**
  116. * 基础页面变化检测 - 通过两次截图对比
  117. * @param {number} interval - 两次截图间隔时间(秒)
  118. * @param {number} threshold - 相似度阈值(0-1),低于此值认为页面变化,默认0.90(更敏感)
  119. * @returns {boolean} 页面是否发生变化(true=变化,false=未变化)
  120. */
  121. function isPageChangedByScreenshot(interval, threshold) {
  122.     printl("=== 开始截图对比页面变化检测 ===");
  123.     printl("截图间隔: " + interval + "秒");
  124.     printl("相似度阈值: " + (threshold * 100).toFixed(1) + "%");
  125.     printl("&#128161; 提示: 请在" + interval + "秒内切换页面或滚动屏幕");
  126.    
  127.     try {
  128.         // 第一次截图
  129.         printl("\n&#128248; 进行第1次截图...");
  130.         var mat1 = captureScreen();
  131.         if (!mat1) {
  132.             printl("ERR: 第1次截图失败");
  133.             return false;
  134.         }
  135.         printl("✅ 第1次截图成功");
  136.         
  137.         // 等待指定时间
  138.         printl("\n⏰ 等待 " + interval + " 秒...");
  139.         printl("&#128073; 请在此期间切换页面、滚动屏幕或改变界面内容");
  140.         sleep.second(interval);
  141.         
  142.         // 第二次截图
  143.         printl("\n&#128248; 进行第2次截图...");
  144.         var mat2 = captureScreen();
  145.         if (!mat2) {
  146.             printl("ERR: 第2次截图失败");
  147.             mat1 = null; // 释放资源
  148.             return false;
  149.         }
  150.         printl("✅ 第2次截图成功");
  151.         
  152.         // 比较两次截图
  153.         printl("\n&#128269; 开始比较两次截图...");
  154.         var similarity = compareMats(mat1, mat2, 0.2); // 提高采样率到20%
  155.         
  156.         // 释放Mat资源
  157.         mat1 = null;
  158.         mat2 = null;
  159.         
  160.         // 判断是否变化(降低阈值到0.90,更敏感)
  161.         threshold = threshold || 0.90;
  162.         var changed = (similarity < threshold);
  163.         
  164.         printl("\n=== 检测结果 ===");
  165.         printl("相似度: " + (similarity * 100).toFixed(2) + "%");
  166.         printl("阈值: " + (threshold * 100).toFixed(1) + "%");
  167.         
  168.         if (changed) {
  169.             printl("✅✅✅ 结论: 页面已变化!检测到 " + ((1 - similarity) * 100).toFixed(2) + "% 的差异");
  170.         } else {
  171.             printl("⭕ 结论: 页面未变化(差异太小,可能需要更大改动)");
  172.         }
  173.         
  174.         return changed;
  175.     } catch (e) {
  176.         printl("ERR: 截图对比页面变化检测错误: " + String(e));
  177.         return false;
  178.     }
  179. }











  180. /**
  181. * 演示页面变化检测方法
  182. */
  183. function demonstratePageChangeDetection() {
  184.     printl("=== AIWROK 实时截图页面变化检测(最准确版)===");
  185.    
  186.     // 安全获取APP版本
  187.     try {
  188.         if (typeof app !== 'undefined' && app && typeof app.version !== 'undefined') {
  189.             printl("APP版本: " + app.version);
  190.         } else {
  191.             printl("APP版本: 未知");
  192.         }
  193.     } catch (e) {
  194.         printl("获取APP版本失败: " + String(e));
  195.     }
  196.    
  197.     // 获取屏幕尺寸
  198.     var screenWidth = 1080;
  199.     var screenHeight = 1920;
  200.    
  201.     try {
  202.         if (typeof screen !== 'undefined' && screen) {
  203.             if (typeof screen.getScreenWidth === 'function') {
  204.                 screenWidth = screen.getScreenWidth();
  205.                 screenHeight = screen.getScreenHeight();
  206.             }
  207.         }
  208.     } catch (e) {
  209.         printl("获取屏幕尺寸失败,使用默认值: " + String(e));
  210.     }
  211.    
  212.     printl("设备分辨率: " + screenWidth + "x" + screenHeight);
  213.     printl("\n&#128204; 检测方法: 全屏高采样率像素对比");
  214.     printl("&#128204; 检测间隔: 5秒");
  215.     printl("&#128204; 灵敏度: 高(采样率25%,颜色阈值10,相似度阈值90%)");
  216.    
  217.     // 执行页面变化检测
  218.     printl("\n=== 开始页面变化检测 ===");
  219.     printl("⚠️⚠️⚠️ 重要提示 ⚠️⚠️⚠️");
  220.     printl("在接下来的5秒内,请务必:");
  221.     printl("  1. 切换到另一个页面/应用");
  222.     printl("  2. 或者大幅滚动当前页面");
  223.     printl("  3. 或者弹出对话框/菜单");
  224.     printl("否则将检测不到变化!");
  225.    
  226.     var changed = isPageChangedByScreenshot(5, 0.90);
  227.    
  228.     printl("\n=== 最终检测结果 ===");
  229.     if (changed) {
  230.         printl("✅✅✅ 页面已变化!检测成功!");
  231.     } else {
  232.         printl("⭕ 页面未变化");
  233.         printl("&#128161; 如果确实有变化但未检测到,请检查:");
  234.         printl("   1. 是否在5秒内进行了明显的页面切换");
  235.         printl("   2. 变化幅度是否足够大");
  236.         printl("   3. 可以尝试降低阈值,如: isPageChangedByScreenshot(5, 0.85)");
  237.     }
  238.    
  239.     printl("\n=== 检测完成 ===");
  240. }



  241. /**
  242. * 运行页面变化检测示例
  243. */
  244. function runPageChangeDetectionExample() {
  245.     printl("开始执行实时截图页面变化检测示例");
  246.     printl("⚠️ 本示例完全基于实时截图,不需要任何CV文件");
  247.     printl("⚠️ 采用最准确的全屏高采样率对比方法");
  248.     printl("⚠️ 检测间隔: 5秒\n");
  249.    
  250.     // 演示页面变化检测
  251.     demonstratePageChangeDetection();
  252.    
  253.     printl("\n页面变化检测示例执行完毕");
  254. }

  255. // 运行示例
  256. runPageChangeDetectionExample();
复制代码



unto苹果脚本7种不同的OCR识别nextnocontent
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关导读
群发软件安卓脚本示例实时截图判断页面变化
安卓脚本示例实时截图判断页面变化
群发软件苹果脚本7种不同的OCR识别
苹果脚本7种不同的OCR识别
群发软件安卓脚本多变的function用法
安卓脚本多变的function用法
群发软件苹果脚本示例Config配置H5集成
苹果脚本示例Config配置H5集成
群发软件安卓脚本类型判断与Boolean对象综合示例
安卓脚本类型判断与Boolean对象综合示例
群发软件线程全局变量H5可视化控制台
线程全局变量H5可视化控制台
群发软件秒吐司快速显示和关闭的UI提示窗口
秒吐司快速显示和关闭的UI提示窗口
群发软件苹果脚本里H5 里的 window.at.callFun 示例
苹果脚本里H5 里的 window.at.callFun 示例
群发软件H5日志打印运行过程例子
H5日志打印运行过程例子
群发软件AIWROK软件字符串方法实用案例
AIWROK软件字符串方法实用案例
群发软件HID贝塞尔曲线运动控制器
HID贝塞尔曲线运动控制器
群发软件AIWROK苹果脚本sleep方法综合实战示例
AIWROK苹果脚本sleep方法综合实战示例
群发软件苹果脚本Line控件的多种创意用法和实际应用场景
苹果脚本Line控件的多种创意用法和实际应用场景
群发软件苹果脚本toast高级应用综合示例
苹果脚本toast高级应用综合示例
群发软件苹果智能OCR自动化助手
苹果智能OCR自动化助手
群发软件苹果脚本UI超快速点击示例
苹果脚本UI超快速点击示例
群发软件展示时间戳的各种复杂处理方法
展示时间戳的各种复杂处理方法
群发软件苹果脚本随机数实用示例
苹果脚本随机数实用示例
群发软件安卓手机脚本多种倒计时显示方式
安卓手机脚本多种倒计时显示方式
群发软件苹果脚本屏幕事件EVENT示例
苹果脚本屏幕事件EVENT示例
群发软件苹果脚本屏幕类screen例子
苹果脚本屏幕类screen例子
群发软件安卓手机config配置演示实列
安卓手机config配置演示实列
群发软件苹果脚本配置config小实例
苹果脚本配置config小实例 https://www.yuque.com/aiwork/dcvhmb/qolobpysdg0hvi2e
群发软件苹果脚本矩形类rect小实例
苹果脚本矩形类rect小实例
群发软件AIWROK安卓苹果平台设计的实用工具库
AIWROK安卓苹果平台设计的实用工具库
群发软件AIWROK软件Function导入方法实例演示
AIWROK软件Function导入方法实例演示
群发软件苹果脚本实例1项目project应用示例
苹果脚本实例1项目project应用示例
群发软件苹果脚本实例1剪贴板功能集成
苹果脚本实例1剪贴板功能集成
群发软件苹果iOS脚本Detect类系统性使用示例
苹果iOS脚本Detect类系统性使用示例
群发软件AIWROK苹果系统打印H5界面日志输出
AIWROK苹果系统打印H5界面日志输出
群发软件H5案例自动化看广告撸金币系统
H5案例自动化看广告撸金币系统
群发软件AIWROK苹果脚本H5任务执行小例子
AIWROK苹果脚本H5任务执行小例子
群发软件AIWROK软件苹果水平容器[Horizontal]小实例
AIWROK软件苹果水平容器[Horizontal]小实例
群发软件AIWROK苹果脚本实例1界面UI输入框类[Input]
AIWROK苹果脚本实例1界面UI输入框类
群发软件AIWROK软件苹果脚本案例1空白站位[Space]方法
AIWROK软件苹果脚本案例1空白站位[Space]方法
群发软件AIWROK软件苹查系统复选框用法
AIWROK软件苹查系统复选框用法
群发软件苹果AIWROK实例单选按钮组类[RadioButtonGroup]完整综合示例
苹果AIWROK实例单选按钮组类[RadioButtonGroup]完整综合示例
群发软件AIWROK软件苹果实例UI-垂直容器[Vertical]高级综合示例
AIWROK软件苹果实例UI-垂直容器[Vertical]高级综合示例
群发软件IOS苹果脚本View的完整功能实例
IOS苹果脚本View的完整功能实例
群发软件AIWROK苹果系统实例演示1标签类[Label]方法
AIWROK苹果系统实例演示1标签类[Label]方法
信息发布软件AIWROK软件苹果UI按钮Button方法示例
AIWROK软件苹果UI按钮Button方法示例
信息发布软件AIWROK软件苹果TAB界面视图示例
AIWROK软件苹果TAB界面视图示例
信息发布软件AIWROK苹果系统自带view视图简洁UI界面示例
AIWROK苹果系统自带view视图简洁UI界面示例
信息发布软件汇集HID安卓输入文字的方法和复制粘贴示例
汇集HID安卓输入文字的方法和复制粘贴示例
信息发布软件AIWROK软件找字与OCR方法汇总示例
AIWROK软件找字与OCR方法汇总示例
信息发布软件AIWROK软件找图方法汇总示例
AIWROK软件找图方法汇总示例
信息发布软件AIWROK软件滑动方法集合示例
AIWROK软件滑动方法集合示例
信息发布软件AIWROK软件安卓AIWROK汇集软件点击
AIWROK软件安卓AIWROK汇集软件点击
信息发布软件苹果系统点击方法综合示例
苹果系统点击方法综合示例
信息发布软件AIWROK苹果系统找图方法完整示例集合
AIWROK苹果系统找图方法完整示例集合
信息发布软件苹果系统找图方法完整示例集合
苹果系统找图方法完整示例集合
信息发布软件苹果IOS系统找字OCR方法例子
苹果IOS系统找字OCR方法例子
信息发布软件AIWORK软件数组高级示例
AIWORK软件数组高级示例
信息发布软件AIWROK软件运算符封装库示例
AIWROK软件运算符封装库示例
信息发布软件AIWROK软件语法运行小示例
AIWROK软件语法运行小示例
信息发布软件AIWROK软件JS循环小示例
AIWROK软件JS循环小示例
信息发布软件AIWROK软件H5网页被主脚本获取值用法
AIWROK软件H5网页被主脚本获取值用法
信息发布软件AIWROK软件创建可暂停恢复的多线程任务
AIWROK软件创建可暂停恢复的多线程任务
信息发布软件AIWROK软件类型转换方法例子
AIWROK软件类型转换方法例子
信息发布软件AIWROK软件H5脚本执行与进度显示
AIWROK软件H5脚本执行与进度显示 .
信息发布软件AIWROK软件根据时间段执行异步任务支持多线程并行处理
AIWROK软件根据时间段执行异步任务支持多线程并行处理
信息发布软件H5自动开关执行脚本功能演示
H5自动开关执行脚本功能演示
信息发布软件AIWROK软件H5单选脚本运行示例
AIWROK软件H5单选脚本运行示例
信息发布软件H5任务脚本选择与执行中心
H5任务脚本选择与执行中心
信息发布软件H5里CheckBox控件演示
H5里CheckBox控件演示

QQ|( 京ICP备09078825号 )

本网站信息发布软件,是可以发布论坛,发送信息到各大博客,各大b2b软件自动发布,好不夸张的说:只要手工能发在电脑打开IE能发的网站,用这个宣传软件就可以仿制动作,进行推送发到您想发送的B2B网站或是信息发布平台上,不管是后台,还是前台,都可以进行最方便的广告发布,这个广告发布软件,可以按月购买,还可以试用软件,对网站的验证码也可以完全自动对信息发布,让客户自动找上门,使企业轻松实现b2b发布,这个信息发布软件,均是本站原创正版开发,拥有正版的血统,想要新功能,欢迎提意见给我,一好的分类信息群发软件在手,舍我其谁。QQ896757558

GMT+8, 2026-4-23 07:29 , Processed in 0.115943 second(s), 49 queries .

宣传软件--信息发布软件--b2b软件广告发布软件

快速回复 返回顶部 返回列表