Skip to main content

多点比色

from ascript.android.screen import CompareColors

对比当前屏幕图像 固定点位颜色特征 是否相同

使用场景
  • 判断当前处于哪个页面/界面(每个页面有固定的颜色特征)
  • 检测按钮状态:可点击(高亮色)vs 不可点击(灰色)
  • 等待页面切换完成(颜色特征从 A 变为 B)
  • 多组比色同时判断,快速区分多个界面状态
  • 比找图更轻量,适合固定 UI 不变的场景

方法

compare — 比色

  • 函数
CompareColors.compare(colors, diff=0.9, bitmap=None, mode=0, until=0, sim=1.0)
  • 参数
参数类型是否必填说明
colorsstr颜色特征点,通常用图色助手获取
difffloat颜色相似度 0-1,默认 0.9
bitmapBitmap传入图片,None=自动截屏
modeint比色模式,0=RGB
untilint超时毫秒数,0=不重试,>0=阻塞直到成功或超时
simfloat整体相似度阈值,默认 1.0
  • 返回值

True=比色成功,False=比色失败

  • 示例
from ascript.android.screen import CompareColors

res = CompareColors.compare('339,342,#38D8A8|445,424,#FFFFFF|504,586,#FFFFFF')
if res:
print('比色成功')
else:
print('比色失败')

compare_multi — 多组比色

同时比对多组颜色特征,返回第一个匹配的索引。

  • 函数
CompareColors.compare_multi(colors_list, diff=0.9, mode=0, sim=1.0)
  • 参数
参数类型是否必填说明
colors_listlist多组颜色特征字符串列表
difffloat颜色相似度 0-1,默认 0.9
modeint比色模式
simfloat整体相似度阈值
  • 返回值

匹配成功的索引(从 0 开始),全部不匹配返回 -1

  • 示例
from ascript.android.screen import CompareColors

# 同时判断多个界面状态
index = CompareColors.compare_multi([
'339,342,#38D8A8|445,424,#FFFFFF', # 状态 A
'100,200,#FF0000|200,300,#00FF00', # 状态 B
])

if index == 0:
print("当前是状态 A")
elif index == 1:
print("当前是状态 B")
else:
print("都不匹配")