1. 说明

  • 截图函数需要Andrioid 5.0 以上版本才能使用
  • 无障碍模式下截图是需要权限的,如果弹出了运行截图,请授权
  • 代理模式下的截图不需要权限,建议长期运行使用代理模式
  • 图色模块的对象前缀是image,例如 image.requestScreenCapture()这样调用
  • 图色模块需要对颜色进行查找,开发工具自带找色功能,请参考找色找图操作

2. 申请截图

2.1. image.requestScreenCapture

  • 向系统申请屏幕截图权限,返回是否请求成功。
  • 第一次使用该函数会弹出截图权限请求,建议选择“总是允许”。
  • 这个函数只是申请截图权限,并不会真正执行截图,真正的截图函数是captureScreen()。
  • 该函数在截图脚本中只需执行一次,而无需每次调用captureScreen()都调用一次。
    • @param timeout 超时时间,单位是毫秒
    • @param type 截屏的类型,0 自动选择,1 代表授权模式,2 代表无需权限模式(该模式前提条件:运行模式为代理模式)
  • @return true 代表成功 false代表失败

function main() {
    var request = image.requestScreenCapture(10000,0);
    if (request){
        toast("申请成功");
    }else {
        toast("申请失败");
    }
}
main();

2.2. image.releaseScreenCapture

  • 释放截屏请求

function main() {
    image.releaseScreenCapture();
}
main();

3. 截图

3.1. image.captureScreen

  • 截取当前屏幕并返回一个Image对象。
  • 没有截图权限时执行该函数会返回null
  • 两次调用可能返回相同的Image对象。这是因为设备截图的更新需要一定的时间,短时间内(一般来说是16ms)连续调用则会返回同一张截图。
  • 截图需要转换为Bitmap格式,从而该函数执行需要一定的时间(0~20ms)。
  • 另外在requestScreenCapture()执行成功后需要一定时间后才有截图可用,因此如果立即调用captureScreen(),会等待一定时间后(一般为几百ms)才返回截图。
  • 如果区域空或则有负数的,就会是全屏
  • @param retryNumber 重试次数,直到能截到图为止,默认是3
  • @param x 截图的起始X坐标
  • @param y 截图的起始Y坐标
  • @param w 截图的宽度,从X坐标算起
  • @param h 截图的高度,从Y坐标算起
  • @return AutoImage对象或者null

function main() {
    var image = image.captureScreen(3,0,0,300,400);
    if (image!=null){
        toast("截图成功");
    } else {
        toast("截图失败");
    }
}
main();

3.2. image.captureFullScreen

  • 截取当前屏幕并返回一个Image对象。
  • @return AutoImage对象或者null

function main() {
    var image = image.captureFullScreen();
    if (image!=null){
        toast("截图成功");
    } else {
        toast("截图失败");
    }
}
main();

3.3. image.captureScreenBitmap

  • 将屏幕抓取为Bitmap对象,如果中间有-1或者宽度、宽度为-1,将会是全屏
  • @param format jpg或者png,代理模式下有用
  • @param x 开始X坐标
  • @param y 开始Y坐标
  • @param w 宽度
  • @param h 高度
  • @param q 图片质量,1 - 100,越高越好,代理模式下有用
  • @return Bitmap null或者bitmap对象

function main() {
    var b = image.captureScreenBitmap("jpg",800,800,100,100,100);
    if (b!=null){
        toast("截图成功");
    } else {
        toast("截图失败");
    }
}
main();

3.4. image.captureToFile

  • 截取当前屏幕并以PNG格式保存到path中。如果文件不存在会被创建;文件存在会被覆盖。
  • 如果区域空或则有负数的,就会是全屏
  • @param retryNumber 重试次数,直到能截到图为止,默认是3
  • @param x 截图的起始X坐标
  • @param y 截图的起始Y坐标
  • @param w 截图的宽度,从X坐标算起
  • @param h 截图的高度,从Y坐标算起
  • @param path 截图保存路径
  • @return true 截图成功 false 代表不成功

function main() {
    var cap = image.captureToFile(3,0,0,300,400,"/sdcard/a.png");
    if (cap){
        toast("截图成功");
    }else {
        toast("截图失败");
    }
}
main();

4. 找色

4.1. image.findColor

  • 在图片中找到颜色和color完全相等的某个点,并返回该点的左边;如果没有找到,则返回null。
  • @param image 图片
  • @param color 要寻找的颜色
  • @param threshold 找色时颜色相似度取值为 0.0 ~ 1.0
  • @param x 区域的X起始坐标
  • @param y 区域的Y起始坐标
  • @param w 区域的宽度
  • @param h 区域的高度
  • @param limit 限制个数
  • @return 多个Point 坐标点数组或者null

function main() {
      var req = image.requestScreenCapture(10000,0);
        if (!req) {
         req = image.requestScreenCapture(10000,0);
      }
      if (!req) {
          toast("申请权限失败");
          return;
      }
      var aimage = image.captureFullScreen();
      if (aimage != null) {
          var points = image.findColor(aimage,"0xCDD7E9-0x101010", 0.9, 0, 0, 0, 0, 10);
          logd("points "+points);
      }

}
main();

4.2. image.findColorJ

  • 在图片中找到颜色和color完全相等的点,参数从JSON中获取如果没有找到,则返回null。
  • @param image 图片
  • @param jsonFileName res文件中取色工具生成的JSON文件,只要填写文件名称即可,后缀不用填写
  • @return 多个Point 坐标点数组或者null

function main() {
      var req = image.requestScreenCapture(10000,0);
        if (!req) {
         req = image.requestScreenCapture(10000,0);
      }
      if (!req) {
          toast("申请权限失败");
          return;
      }
      var aimage = image.captureFullScreen();
      if (aimage != null) {
          var points = image.findColorJ(aimage,"金币");
          logd("points "+points);
      }

}
main();

4.3. image.findColorEx

  • 在当前屏幕中找到颜色和color完全相等的点,并返回该点的左边;如果没有找到,则返回null。
  • @param color 要寻找的颜色
  • @param threshold 找色时颜色相似度取值为 0.0 ~ 1.0
  • @param x 区域的X起始坐标
  • @param y 区域的Y起始坐标
  • @param w 区域的宽度
  • @param h 区域的高度
  • @param limit 限制个数
  • @return 多个Point 坐标点数组或者null

function main() {
      var req = image.requestScreenCapture(10000,0);
        if (!req) {
         req = image.requestScreenCapture(10000,0);
      }
      if (!req) {
          toast("申请权限失败");
          return;
      }
      var points = image.findColorEx("0xCDD7E9-0x101010", 0.9, 0, 0, 0, 0, 10);
      logd("points "+points);

}
main();

4.4. image.findColorExJ

  • 当前屏幕中找到颜色和color完全相等的点,参数从JSON中获取如果没有找到,则返回null。
  • @param jsonFileName res文件中取色工具生成的JSON文件,只要填写文件名称即可,后缀不用填写
  • @return 多个Point 坐标点数组或者null

function main() {
      var req = image.requestScreenCapture(10000,0);
        if (!req) {
         req = image.requestScreenCapture(10000,0);
      }
      if (!req) {
          toast("申请权限失败");
          return;
      }
      var points = image.findColorExJ("金币");
      logd("points "+points);

}
main();

4.5. image.findMultiColor

  • 多点找色,找到所有符合标准的点,类似于按键精灵的多点找色。
  • @param image 要找色的图片
  • @param firstColor 第一个点的颜色
  • @param threshold 找色时颜色相似度取值为 0.0 ~ 1.0
  • @param points 字符串类似这样 6|1|0x969696-0x000010,1|12|0x969696,-4|0|0x969696
  • @param x 区域的X起始坐标
  • @param y 区域的Y起始坐标
  • @param w 区域的宽度
  • @param h 区域的高度
  • @param limit 限制个数
  • @return 多个Point 坐标点数组或者null

function main() {
      var req = image.requestScreenCapture(10000,0);
        if (!req) {
         req = image.requestScreenCapture(10000,0);
      }
      if (!req) {
          toast("申请权限失败");
          return;
      }
      var aimage = image.captureFullScreen();
      if (aimage != null) {
          var points = image.findMultiColor(aimage,"0xDD7A5F-0x101010", "29|25|0xBB454B-0x101010,58|44|0xA6363A-0x101010", 0.9, 0, 0, 0, 0, 10);
          logd("points "+points);
      }

}
main();

4.6. image.findMultiColorJ

  • 多点找色,找到所有符合标准的点,参数从JSON文件中读取,类似于按键精灵的多点找色
  • @param image 要找色的图片
  • @param jsonFileName res文件中取色工具生成的JSON文件,只要填写文件名称即可,后缀不用填写
  • @return 多个Point 坐标点数组或者null

function main() {
      var req = image.requestScreenCapture(10000,0);
        if (!req) {
         req = image.requestScreenCapture(10000,0);
      }
      if (!req) {
          toast("申请权限失败");
          return;
      }
      var aimage = image.captureFullScreen();
      if (aimage != null) {
          var points = image.findMultiColorJ(aimage,"金币");
          logd("points "+points);
      }

}
main();

4.7. image.findMultiColorEx

  • 多点找色,找到所有符合标准的点,类似于按键精灵的多点找色。
  • @param firstColor 第一个点的颜色
  • @param threshold 找色时颜色相似度取值为 0.0 ~ 1.0
  • @param points 字符串类似这样 6|1|0x969696-0x000010,1|12|0x969696,-4|0|0x969696
  • @param x 区域的X起始坐标
  • @param y 区域的Y起始坐标
  • @param w 区域的宽度
  • @param h 区域的高度
  • @param limit 限制个数
  • @return 多个Point 坐标点数组或者null

function main() {
      var req = image.requestScreenCapture(10000,0);
        if (!req) {
         req = image.requestScreenCapture(10000,0);
      }
      if (!req) {
          toast("申请权限失败");
          return;
      }

      var points = image.findMultiColorEx("0xDD7A5F-0x101010", "29|25|0xBB454B-0x101010,58|44|0xA6363A-0x101010", 0.9, 0, 0, 0, 0, 10);
      logd("points "+points);


}
main();

4.8. image.findMultiColorExJ

  • 多点找色,找到所有符合标准的点,自动抓取当前屏幕的图片,参数从JSON文件中读取,类似于按键精灵的多点找色
  • @param jsonFileName res文件中取色工具生成的JSON文件,只要填写文件名称即可,后缀不用填写
  • @return 多个Point 坐标点数组或者null

function main() {
      var req = image.requestScreenCapture(10000,0);
        if (!req) {
         req = image.requestScreenCapture(10000,0);
      }
      if (!req) {
          toast("申请权限失败");
          return;
      }
      var points = image.findMultiColorExJ("金币");
      logd("points "+points);


}
main();

5. 找图

5.1. image.findImage

  • 找图。在大图片image中查找小图片template的位置(模块匹配),找到时返回位置坐标区域(Rect),找不到时返回null。
  • @param image 大图片
  • @param template 小图片(模板)
  • @param x 找图区域 x 起始坐标
  • @param y 找图区域 y 起始坐标
  • @param w 找图区域 w 宽度
  • @param h 找图区域 h 高度
  • @param threshold 图片相似度。取值范围为0~1的浮点数。默认值为0.9。
  • @param limit 限制结果的数量,如果要找到1个,就填写1,如果是多个请填写多个
  • @return Rect 区域坐标对象或者null

function main() {
    var request = image.requestScreenCapture(10000,0);
    if (request){
        toast("申请成功");
    }else {
       toast("申请失败");
        exit();
    }
    sleep(5000);
    //从工程目录下res文件夹下读取sms.png文件
   var sms=readResAutoImage("sms.png");
    //在当前屏幕中查找,并且限制只查找一个
    var point = image.findImageEx( sms, 1);
    logd("point "+point);
    //抓取屏幕
   var aimage = image.captureFullScreen();
    logd("aimage "+aimage);
    if (aimage != null) {
        //在图片中查找
        point = image.findImage(aimage, sms,0,0,0,0,1, 1);
        logd("point "+point);
    }
}

main();

5.2. image.findImageEx

  • 找图。在当前屏幕中查找小图片template的位置(模块匹配),找到时返回位置坐标区域(Rect),找不到时返回null。
  • @param template 小图片(模板)
  • @param x 找图区域 x 起始坐标
  • @param y 找图区域 y 起始坐标
  • @param w 找图区域 w 宽度
  • @param h 找图区域 h 高度
  • @param threshold 图片相似度。取值范围为0~1的浮点数。默认值为0.9。
  • @param limit 限制结果的数量,如果要找到1个,就填写1,如果是多个请填写多个
  • @return Rect 区域坐标对象数组或者null

function main() {
    var request = image.requestScreenCapture(10000,0);
    if (request){
        toast("申请成功");
    }else {
       toast("申请失败");
        exit();
    }
    sleep(5000);
    //从工程目录下res文件夹下读取sms.png文件
   var sms=readResAutoImage("sms.png");
    //在当前屏幕中查找,并且限制只查找一个
    var point = image.findImageEx(sms,0,0,0,0,1, 1);
    logd("point "+point);
}

main();

5.3. image.matchTemplate 模板匹配

  • OpenCV模板匹配封装
  • @param image 大图片
  • @param template 小图片(模板)
  • @param weakThreshold 图片相似度。取值范围为0~1的浮点数。默认值为0.9。
  • @param threshold 图片相似度。取值范围为0~1的浮点数。默认值为0.9。
  • @param rect 找图区域。参见findColor函数关于 rect 的说明。
  • @param maxLevel 默认为-1,一般而言不必修改此参数。不加此参数时该参数会根据图片大小自动调整。找图算法是采用图像金字塔进行的, level参数表示金字塔的层次, level越大可能带来越高的找图效率,但也可能造成找图失败(图片因过度缩小而无法分辨)或返回错误位置。因此,除非您清楚该参数的意义并需要进行性能调优,否则不需要用到该参数。
  • @param limit 限制结果的数量,如果要找到1个,就填写1,如果是多个请填写多个
  • @return Match集合 或者null

function main() {
     var req = image.requestScreenCapture(10000,0);
     if (!req) {
         req = image.requestScreenCapture(10000,0);
     }
     if (!req) {
         toast("申请权限失败");
         return;
     }
     var aimage = image.captureFullScreen();
     if (aimage != null) {
        var temp = readResAutoImage("tmp.png");
        var rectp= new Rect();
        rectp.left=10;
        rectp.top=100;
        rectp.right=100;
        rectp.bottom=400;
         var x = image.matchTemplate(aimage, temp,0.9,0.9,rectp,-1,1);
         logd(x);
     }
}
main();

5.4. image.matchTemplateEx 模板匹配

  • OpenCV模板匹配封装,在当前屏幕截图中进行匹配
  • @param template 小图片(模板)
  • @param weakThreshold 图片相似度。取值范围为0~1的浮点数。默认值为0.9。
  • @param threshold 图片相似度。取值范围为0~1的浮点数。默认值为0.9。
  • @param rect 找图区域。参见findColor函数关于 rect 的说明。
  • @param maxLevel 默认为-1,一般而言不必修改此参数。不加此参数时该参数会根据图片大小自动调整。找图算法是采用图像金字塔进行的, level参数表示金字塔的层次, level越大可能带来越高的找图效率,但也可能造成找图失败(图片因过度缩小而无法分辨)或返回错误位置。因此,除非您清楚该参数的意义并需要进行性能调优,否则不需要用到该参数。
  • @param limit 限制结果的数量,如果要找到1个,就填写1,如果是多个请填写多个
  • @return Match集合 或者null

function main() {
     var req = image.requestScreenCapture(10000,0);
     if (!req) {
         req = image.requestScreenCapture(10000,0);
     }
     if (!req) {
         toast("申请权限失败");
         return;
     }
     var aimage = image.captureFullScreen();
     if (aimage != null) {
        var temp = readResAutoImage("tmp.png");
        var rectp= new Rect();
        rectp.left=10;
        rectp.top=100;
        rectp.right=100;
        rectp.bottom=400;
         var x = image.matchTemplateEx( temp,0.9,0.9,rectp,-1,1);
         logd(x);
     }
}
main();

6. 其他

6.1. image.readImage

  • 读取在路径path的图片文件并返回一个{@link AutoImage}对象。如果文件不存在或者文件无法解码则返回null。
  • @param path 图片路径
  • @return AutoImage 对象或者null

function main() {
    var autoimg = image.readImage("/sdcard/a.png");
}
main();

6.2. image.readBitmap

  • 读取在路径path的图片文件并返回一个{@link AutoImage}对象。如果文件不存在或者文件无法解码则返回null。
  • @param path 图片路径
  • @return android的bitmap对象或者null

function main() {
    var autoimg = image.readBitmap("/sdcard/a.png");
}
main();

6.3. image.pixelInImage

  • 返回图片image在点(x, y)处的像素的ARGB值。
  • 该值的格式为0xAARRGGBB,是一个"32位整数"
  • 坐标系以图片左上角为原点。以图片左侧边为y轴,上侧边为x轴。
  • @param image 图片
  • @param x 要获取的像素的横坐标。
  • @param y 要获取的像素的纵坐标。
  • @return 整型

function main() {
    var imageX = image.captureFullScreen();
    var color = image.pixelInImage(imageX,100,100);
}
main();

6.4. image.getPixelBitmap

  • 取得Bitmap图片的某个点的颜色值
  • @param bitmap 图片对象
  • @param x x坐标点
  • @param y y坐标点
  • @return int 颜色值

function main() {
    var bitmap = image.captureScreenBitmap("jpg",800,800,100,100,100);
    var color = image.getPixelBitmap(bitmap,100,100);
}
main();

6.5. image.getPixelsBitmap

  • 取得Bitmap图片的某个区域点的颜色值,等同于 Bitmap.getPixels
  • @param bitmap 图片对象
  • @param arraySize 要返回的区域数组的大小
  • @param offset 写入到pixels[]中的第一个像素索引值
  • @param stride pixels[]中的行间距个数值(必须大于等于位图宽度)。可以为负数
  • @param x  从位图中读取的第一个像素的x坐标值。
  • @param y 从位图中读取的第一个像素的y坐标值
  • @param width   从每一行中读取的像素宽度
  • @param height    读取的行数
  • @return int 颜色值数组

function main() {
    var bitmap = image.captureScreenBitmap("jpg",800,800,100,100,100);
     var w = bitmap.getWidth();
     var h =bitmap.getHeight();
   var mPixels =  image.getPixelsBitmap(bitmap,w*h, 0, w, 0, 0,w, h);
}
main();

7. 图片转换

7.1. image.saveTo

  • 保存到文件中
  • @param img 图片对象
  • @param path 路径
  • @return bool true代表成功,false 代表失败

function main() {
    var imageX = image.captureFullScreen();
    var r = image.saveTo(imageX,"/sdard/a.png");
    toast("result "+r);
}
main();

7.2. image.toBase64

  • 转成base64的字符串
  • @param img 图片对象
  • @return string

function main() {
    var imageX = image.captureFullScreen();
    var r = image.toBase64(imageX);
    toast("result "+r);
}
main();

7.3. image.clip

  • 剪切图片
  • @param img 图片对象
  • @param x x起始坐标
  • @param y y起始坐标
  • @param w 宽度
  • @param h 高度
  • @return AutoImage 对象或者null

function main() {
    var imageX = image.captureFullScreen();
    var r = image.clip(imageX,100,100,300,400);
    toast("result "+r);
}
main();

7.4. image.pixel

  • 取得图片的某个点的颜色值
  • @param img 图片对象
  • @param x x坐标点
  • @param y y坐标点
  • @return int 颜色值

function main() {
    var imageX = image.captureFullScreen();
    var r = image.pixel(imageX,100,100);
    toast("result "+r);
}
main();

7.5. image.isRecycled

  • 是否被回收了
  • @param img 图片对象
  • @return bool true代表已经被回收了

function main() {
    var imageX = image.captureFullScreen();
    var r = image.isRecycled(imageX);
    toast("result "+r);
}
main();

7.6. image.recycle

  • 回收图片
  • @param img 图片对象

function main() {
    var imageX = image.captureFullScreen();
     image.recycle(imageX);

}
main();

results matching ""

    No results matching ""