Auto.js找图找色常用功能
Posted aiguangyuan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Auto.js找图找色常用功能相关的知识,希望对你有一定的参考价值。
1. 颜色的表示方法
1. 颜色表示方式1:"#AARRGGBB",需要表示透明度的时候用这种方法;
2. 颜色表示方式2:"#RRGGBB",不需要表示透明度的时候用这种方法;
AA 是Alpha通道(透明度)的值;
RR 是R通道(红色)的值;
GG 是G通道(绿色)的值;
BB 是B通道(蓝色)的值;
2. 颜色的转换方法
1. 返回颜色值的字符串;
// 返回颜色整数值所对应的字符串
// colors.toString(colorNum);
console.log(colors.toString(-16777166));
// #ff000032
2. 返回颜色的整数值;
// 返回字符串所对应的颜色整数值
// colors.parseColor(colorStr);
console.log(colors.parseColor("#000032");
// -16777166
3. 返回这些颜色通道构成的整数颜色值;
// 返回透明度与三种颜色构成的颜色整数值
// colors.argb(alphaNum, redNum, greenNum, blueNum);
console.log(colors.argb(255,255,180,0));
// -19456
console.log(colors.argb(100,255,180,0));
// 1694479360
4. 返回这些颜色通道构成的整数颜色值,Alpha通道将是255(不透明);
// 返回三种颜色构成的整数值
// colors.rgb(redNum, greenNum, blueNum);
console.log(colors.rgb(255,180,0));
// -19456
console.log(colors.toString(-19456));
// #ffffb400
5. 返回颜色color的Alpha通道的值,范围0~255;
// 返回透明通道的值
// colors.alpha(Num | Str);
console.log(colors.alpha("#ff0032");
// 255(默认值)
console.log(colors.alpha("#faff0032");
// 250
6.返回颜色color的R通道的值,范围0~255;
// 返回红色通道的值
// colors.red(Num | Str);
console.log(colors.red("#CC00FF"));
// 204
7. 返回颜色color的G通道的值,范围0~255;
// 返回绿色通道的值
// colors.green(Num | Str);
console.log(colors.green("#CC00FF"));
// 0
8. 返回颜色color的B通道的值,范围0~255;
// 返回蓝色通道的值
// colors.blue(Num | Str);
console.log(colors.blue("#CC00FF"));
// 255
3. 比较图片的颜色
1. 比较两个颜色是否相似;
// 返回两个颜色是否相似(颜色值1,颜色值2,[临界值(默认为4),算法(默认diff)])
// colors.isSimilar(num|str, num|str,[thresholdNum,algorithm]);
console.log(colors.isSimilar('#000000','#000001'));
// true
console.log(colors.isSimilar('#000000','#000001',0));
// false
2. 比较两个颜色是否相等;
// 返回两个颜色是否相等,该函数会忽略Alpha通道的值进行比较
// colors.equals(num|str, num|str);
console.log(colors.equals('#000000','#000000'));
// true
4. Auto.js内置的颜色
1. colors.BLACK
黑色,颜色值 #FF000000
2. colors.DKGRAY
深灰色,颜色值 #FF444444
3. colors.GRAY
灰色,颜色值 #FF888888
4. colors.LTGRAY
亮灰色,颜色值 #FFCCCCCC
5. colors.WHITE
白色,颜色值 #FFFFFFFF
6. colors.RED
红色,颜色值 #FFFF0000
7. colors.GREEN
绿色,颜色值 #FF00FF00
8. colors.BLUE
蓝色,颜色值 #FF0000FF
9. colors.YELLOW
黄色,颜色值 #FFFFFF00
10. colors.CYAN
青色,颜色值 #FF00FFFF
11. colors.MAGENTA
品红色,颜色值 #FFFF00FF
12. colors.TRANSPARENT
透明,颜色值 #00000000
5. 图片防止内存泄漏
图片对象创建后尽量在不使用时进行回收,图片对象通过recycle函数来回收,同时避免循环创建大量图片。
// 读取图片
var img = images.read("./1.png");
// 对图片进行需要操作
// 回收图片
img.recycle();
截屏的图片不需要回收。
var img = caputerScreen();
// 不需要回收操作
6. 图片操作常用方法
1. 读取本地图片;
// 读取本地图片,返回image对象或null
// images.read(path);
var img = images.read('a.jpg');
img.recycle();
2. 加载远程图片;
// 加载远程图片,返回image对象或null
// images.load(url);
var img = images.load('https://hyb1996.github.io/AutoJs-Docs/images/logo.png');
img.recycle();
3. 复制图片;
// 复制图片,返回image对象或null
// images.copy(obj);
var img1 = images.read('a.jpg');
var img2 = images.copy(img1);
4. 保存图片;
// 保存图片对象(图片对象,保存路径,[格式,质量])
// images.save(obj,path,[format,quality]);
var img = images.load("https://hyb1996.github.io/AutoJs-Docs/images/logo.png");
images.save(img,"/sdcard/a.jpg","jpg",50);
// 如果文件不存在会被创建,如果存在会被覆盖
5. 另存图片;
// 将图片对象另存为一个指定的地址
// obj.saveTo(path);
var img1 = images.read('a.jpg');
var img2 = images.copy(img1);
img2.saveTo('/sdcard/copy.png')
img1.recycle();
img2.recycle();
6. 获取图片尺寸;
// 返回以像素为单位图片宽度
// img.getWidth()
// 返回以像素为单位的图片高度
// img.getHeight()
var img = images.read('a.png');
if(img)
var width = img.getWidth();
var height = img.getHeight();
console.log(width,height);
// 300,400
;
7. 图片的编码转换
// 返回img对象
// images.fromBase64(base64);
// 返回base64数据
// images.toBase64(img,[format = "png", quality = 100]);
// 返回img对象
// images.fromBytes(bytes);
// 返回图片字节数据
// images.toBytes(img,[format = "png", quality = 100]);
var result = http.get("https://hyb1996.github.io/AutoJs-Docs/images/logo.png");
var obj = result.body.bytes();
var img = images.fromBytes(obj);
img.saveTo("/sdcard/bbb.png");
8. 获取屏幕小图
// 从大图片的指定位置处剪切指定尺寸的小图片,返回剪切的小图片
// images.clip(img, x, y, w, h);
// 封装获取屏幕小图的函数
function clipImg(x1,y1,x2,y2,path)
var screen = images.captureScreen();
var img = images.clip(screen,x1,y1,x2-x1,y2-y1);
img.saveTo(path);
img.recycle();
;
9. 图片处理的函数
// 调整图片大小,返回调整后的图片
// images.resize(img,size,[interpolation]);
// 放缩图片尺寸,返回放缩后的图片
// images.scale(img,fx,fy,[interpolation]);
// 将图片逆时针旋转degress度,返回旋转后的图片
// images.rotate(img, degress,[x, y]);
// 连接两张图片,并返回连接后的图像,如果两张图片大小不一致,小的那张将适当居中
// images.concat(img1,img2,[direction]);
// 灰度化图片,并返回灰度化后的图片
// images.grayscale(img);
// 将图片阈值化,并返回处理后的图像
// image.threshold(img, threshold, maxVal,[type]);
// 对图片进行自适应阈值化处理,并返回处理后的图像
// images.adaptiveThreshold(img, maxValue, adaptiveMethod, thresholdType, blockSize, C);
// 对图像进行颜色空间转换,并返回转换后的图像
// images.cvtColor(img, code,[dstCn]);
// 将图片二值化,在lowerBound到upperBound范围以外的颜色都变成0,在范围以内的颜色都变成255
// images.inRange(img,lowerBound,upperBound);
// 将图片二值化,在color-interval ~ color+interval范围以外的颜色都变成0,在范围以内的颜色都变成255
// images.interval(img, color, interval);
// 对图像进行模糊(平滑处理),返回处理后的图像
// images.blur(img, size,[anchor, type]);
// 对图像进行中值滤波,返回处理后的图像
// images.medianBlur(img,size);
// 对图像进行高斯模糊,返回处理后的图像
// images.gaussianBlur(img,size,[sigmaX,sigmaY,type]);
// 把OpenCV的Mat对象转换为Image对象
// images.matToImage(mat);
10. 申请截屏权限
// 申请截图权限
// images.requestScreenCapture([landscape]);
// 主线程申请权限时,新开一个线程点击授权
// 自动点击获取授权
threads.start(function()
// 在新线程执行的代码
while(true)
if(text('立即开始').findOnce())
text('立即开始').findOnce().click()
break;
else
sleep(3000)
);
// 请求截屏
if(!requestScreenCapture())
toast("请求截屏失败");
exit();
;
11. 使用截屏功能
在使用截屏功能时,首先要申请截屏权限。
1. 截屏有返回对象;
// 截屏有返回对象
// var img = images.captureScreen();
// 等价于
var img = captureScreen();
// 可对返回对象执行相关操作
img.saveTo('/sdcard/a.png');
2. 截屏无返回对象;
// 截屏无返回对象
// images.captureScreen("/sdcard/b.png");
// 等价于
captureScreen("/sdcard/b.png");
12. 获取图片中某个点的颜色
// 读取图片
var img = images.read('/sdcard/a.png');
// 获取图片上某个点的颜色值
// var dot = images.pixel(img, 500, 155);
// 或者
var dot = img.pixel(500, 155);
// 将点的颜色值转换为字符串形式
var color = colors.toString(dot);
13. 在图片中寻找颜色
1. 在整个图片区域寻找颜色;
// 在图片中查找指定的颜色
// images.findColor(image,color,options);
// 等价于
// findColor(image,color,options);
if(!requestScreenCapture())
toast("请求截图失败");
exit();
;
// 循环找色,找到红色(#ff0000)时停止并报告坐标
while(true)
var img = captureScreen();
// 在图片中查找指定的颜色,可指定临界值
var point = findColor(img, "#ff0000",
threshold: 0
);
if(point)
toast("找到了,坐标为(" + point.x + ", " + point.y + ")");
break;
else
toast("没找到");
;
sleep(1500);
2. 在指定区域中寻找颜色;
// 在图片中查找指定的颜色
// images.findColor(image,color,options);
// 等价于
// findColor(image,color,options);
if(!requestScreenCapture())
toast("请求截图失败");
exit();
;
// 循环找色,找到红色(#ff0000)时停止并报告坐标
while(true)
var img = captureScreen();
var point = findColor(img, "#ff0000",
// 在指定的区域找到指定颜色,数组支持2个值和4个值
region: [100, 100, 500, 800],
// 临界值
threshold: 4
);
if(point)
toast("找到了,坐标为(" + point.x + ", " + point.y + ")");
break;
else
toast("没找到");
;
sleep(1500);
3. 在指定区域查找颜色另一种方法;
// 在指定的区域找到指定颜色
// images.findColorInRegion(img, color, x, y,[width, height, threshold]);
if(!requestScreenCapture())
toast("请求截屏失败");
exit();
;
while(true)
var img = captureScreen();
// 在指定的区域找到指定颜色,x坐标与y坐标必须指定,长宽尺寸和临界值可不指定
var point = findColorInRegion(img, "#ff0000",100,100,500,800,4);
if(point)
toast("找到了,坐标为(" + point.x + ", " + point.y + ")");
break;
else
toast("没找到");
;
sleep(1500);
4. 在图片中寻找完全相等的颜色点;
// 在图片中寻找完全相等的颜色点
// findColorEquals(img, color,[x,y,width,height])
if(!requestScreenCapture())
toast("请求截图失败");
exit();
;
while(true)
var img = captureScreen();
// 查找相等的颜色,可指定坐标与尺寸,不支持临界值
var point = findColorEquals(img,"#f74c31");
if(point)
toast("找到了,坐标为(" + point.x + ", " + point.y + ")");
break;
else
toast("没找到");
;
sleep(1500)
;
5. 多点找色,在一个图片对象中查找一个符合指定颜色,并且满足多点参考条件的坐标;
// images.findMultiColors(img, firstColor, colors[, options]);
if(!requestScreenCapture())
toast("请求截图失败");
exit();
;
var img = images.captureScreen();
var position = images.findMultiColors(img, "#123456",
// 该点必须符合以下这些匹配条件
[
[10, 20, "#ffffff"],
[30, 40, "#000000"]
],
threshold:0
,
region:[,]
);
console.log(position);
以上是关于Auto.js找图找色常用功能的主要内容,如果未能解决你的问题,请参考以下文章