【AutoJs】AutoJs实现自动化截图,并保存到相册

autojs的images模块提供了一些手机设备中常见的图片处理函数,包括截图、读写图片、图片剪裁、旋转、二值化、找色找图等。本文主要介绍截图方法与图片保存并实现一个自动化截图脚本。

1 请求截图权限

requestScreenCapture([landscape]);

landscape为布尔值, 如果值为false, 则表示竖屏截图; true为横屏截图。

如果不指定landscape值,则截图方向默认由当前设备屏幕方向决定,因此务必注意执行该函数时的屏幕方向。

该函数在截图脚本中是 必写函数 \color{Red}{必写函数} 必写函数,只执行一次,只需写一次即可,但必须写在截图方法调用之前。

申请权限代码示例:

if(!requestScreenCapture()){
//如果请求失败则终止脚本
exit();
}
//下面是截图方法...

2 截取当前屏幕

captureScreen();

截取当前屏幕并返回一个Image对象。

特殊的 \color{Red}{特殊的} 特殊的,有captureScreen(path);方法,将不会返回image对象,而是直接将截图保存到path指定路径,适用于不对截图做处理的情况

必须已申请截图权限,没有截图权限时执行该函数会抛出SecurityException。

申请截图权限成功需要一定的时间(约几百ms),如果在申请截图权限后立即
截图,会延迟一段时间。

该函数不会返回null,两次调用可能返回相同的Image对象。这是因为设备截图的更新需要一定的时间,短时间内(一般来说是16ms)连续调用则会返回同一张截图。

截图会被转换为Bitmap格式,从而该函数执行需要一定的时间(0~20ms)。

截图代码示例:

//上方已申请截图权限
var image = captureScreen();

3 保存截图

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");// 保存截图到指定路径

4 截图保存到相册代码

例:从脚本运行开始,截图100次并通通保存到相册,以截图次数命名

if(!requestScreenCapture()){
    //如果请求截图权限失败则终止脚本
    exit();
}
sleep(1000);
//获取截图权限后等待1秒再开始截图
for (var i = 0; i < 100; i++) {
    var path = "/sdcard/" + i + ".png";
    captureScreen(path);
    sleep(100);
}

你可能感兴趣的:(AutoJs,自动化,javascript)