autojs的images模块提供了一些手机设备中常见的图片处理函数,包括截图、读写图片、图片剪裁、旋转、二值化、找色找图等。本文主要介绍截图方法与图片保存并实现一个自动化截图脚本。
requestScreenCapture([landscape]);
landscape为布尔值, 如果值为false, 则表示竖屏截图; true为横屏截图。
如果不指定landscape值,则截图方向默认由当前设备屏幕方向决定,因此务必注意执行该函数时的屏幕方向。
该函数在截图脚本中是 必写函数 \color{Red}{必写函数} 必写函数,只执行一次,只需写一次即可,但必须写在截图方法调用之前。
申请权限代码示例:
if(!requestScreenCapture()){
//如果请求失败则终止脚本
exit();
}
//下面是截图方法...
captureScreen();
截取当前屏幕并返回一个Image对象。
特殊的 \color{Red}{特殊的} 特殊的,有captureScreen(path);
方法,将不会返回image对象,而是直接将截图保存到path指定路径,适用于不对截图做处理的情况
必须已申请截图权限,没有截图权限时执行该函数会抛出SecurityException。
申请截图权限成功需要一定的时间(约几百ms),如果在申请截图权限后立即
截图,会延迟一段时间。
该函数不会返回null,两次调用可能返回相同的Image对象。这是因为设备截图的更新需要一定的时间,短时间内(一般来说是16ms)连续调用则会返回同一张截图。
截图会被转换为Bitmap格式,从而该函数执行需要一定的时间(0~20ms)。
截图代码示例:
//上方已申请截图权限
var image = captureScreen();
images.save(image, path[, format = "png", quality = 100])
image:要保存的对象
path:保存路径,可以指定到文件名称与格式,如果文件已存在则会覆盖
format:非必填,保存格式,可选值有png/jpeg/jpg/webp,默认为png
quality:非必填,保存的质量,0-100之间的整数值,默认100
var img = captureScreen();
images.save(img,"/sdcard/screenshot.png"); // 保存截图到指定路径
不对截图做处理,可以直接保存,无需声明对象
captureScreen("/sdcard/screenshot.png");// 保存截图到指定路径
例:从脚本运行开始,截图100次并通通保存到相册,以截图次数命名
if(!requestScreenCapture()){
//如果请求截图权限失败则终止脚本
exit();
}
sleep(1000);
//获取截图权限后等待1秒再开始截图
for (var i = 0; i < 100; i++) {
var path = "/sdcard/" + i + ".png";
captureScreen(path);
sleep(100);
}