屏幕图像
通用模块
本模块在 Agent 和 HID 模式下均可使用。截图方法会自动选择合适的方式(HID 模式使用录屏扩展,Agent 模式使用 Agent 截图)。
from ascript.ios import screen
从屏幕中 获取图像数据, 图像转换 等操作
屏幕 图像
截取屏幕图片
获取当前屏幕截图,返回物理像素尺寸的图像。
截图来源
capture() 会优先读取 HID 录屏扩展帧;如果录屏帧不可用,则回退到 Agent 截图。返回图片会统一到当前屏幕的物理像素尺寸,因此找图、找色、点击坐标可以使用同一套坐标。
- 函数
screen.capture(rect=None, format=screen.FORMAT_PIL_IMAGE)
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| rect | tuple | 否 | 裁剪区域 (x1, y1, x2, y2),物理像素坐标 |
| format | str | 否 | 返回格式,screen.FORMAT_PIL_IMAGE(默认) 或 screen.FORMAT_CV_MAT |
- 返回值
format=FORMAT_PIL_IMAGE 时返回 PIL.Image.Image,format=FORMAT_CV_MAT 时返回 numpy.ndarray (BGR)。
- 示例
# 获取当前屏幕截图
from ascript.ios import screen
image = screen.capture()
if image:
image.show()
# 区域截图
image = screen.capture([0, 0, 100, 300])
# 获取 OpenCV 格式
mat = screen.capture(format=screen.FORMAT_CV_MAT)
获取屏幕尺寸
获取当前屏幕物理像素尺寸(与 capture() 返回的图片尺寸一致)
- 函数
screen.size()
- 返回值
tuple(width, height) 屏幕宽高元组(物理像素)
- 示例
from ascript.ios import screen
width, height = screen.size()
print(width, height)
获取屏幕朝向
获取屏幕朝向
- 函数
screen.ori()
- 返回值
enum.Enum.Orientation 屏幕数据枚举
- 示例
from ascript.ios import screen
ori = screen.ori()
print(ori)
截图缓存
控制截图缓存,开启后多次图色操作将复用同一张截图,提高效率。
screen.cache(True) # 开启缓存,后续 capture/find/color 复用首次截图
screen.cache(False) # 关闭缓存,后续重新实时截图
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| _cache | bool | 是 | True 开启缓存,False 关闭缓存 |
| image | PIL.Image | 否 | 指定缓存图片,默认自动截图 |
| image_file | str | 否 | 指定缓存图片文件 |
查询当前是否处于缓存状态:
screen.is_cache() # 返回 bool
- 示例
from ascript.ios import screen
from ascript.ios.screen import FindColors, CompareColors
# 开启缓存,多次图色操作复用同一张截图
screen.cache(True)
p = FindColors.find("243,842,#040404|711,916,#6B6B6B")
res = CompareColors.compare("421,916,#0E0E0E|653,931,#5F5F5F")
screen.cache(False)
常量
screen.FORMAT_PIL_IMAGE # capture 默认返回 PIL.Image
screen.FORMAT_CV_MAT # capture 返回 OpenCV Mat,通道为 BGR
图片
图片对象都为 Pil.Image.
可以通过截图,或文件读取得到
读取图片
screen.image_read(file_path)
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| file_path | str | 是 | 图片文件路径 |
- 返回值
PIL.Image.Image PIL Image图像.
- 示例
from ascript.ios import screen
from ascript.ios.system import R
image = screen.image_read(R.img("a.png"))
if image:
image.show()
保存图片
screen.image_save(image: Image.Image, path: str)
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| image | Image.Image | 是 | 图片对象,来源于文件读取,或者屏幕截图 |
| path | str | 是 | 要存储的图片路径 |
- 示例
from ascript.ios import screen
from ascript.ios.system import R
image = screen.capture()
screen.image_save(image, R.img("2.png"))