屏幕图像
通用模块
本模块在 WDA 和 HID 模式下均可使用。截图方法会自动选择合适的方式(HID 模式使用录屏扩展,WDA 模式使用 WDA 截图)。
from ascript.ios import screen
从屏幕中 获取图像数据, 图像转换 等操作
屏幕图像
截取屏幕图片
获取当前屏幕截图,返回物理像素尺寸的图像。
- 函数
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) # 开启缓存
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)
图片
图片对象都为 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"))
裁剪图片
screen.image_crop(image: Image.Image, rect: tuple)
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| image | Image.Image | 是 | 图片对象,来源于文件读取,或者屏幕截图 |
| rect | tuple | 是 | 要裁剪的区域数组 如(0,0,100,100) |
- 返回值
PIL.Image.Image PIL Image图像.
- 示例
from ascript.ios import screen
image = screen.capture()
screen.image_crop(image, (0, 0, 100, 100))
图像某点颜色值
screen.image_pixel(image: Image.Image, x: int, y: int)
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| image | Image.Image | 是 | 图片对象,来源于文件读取,或者屏幕截图 |
| x,y | int | 是 | 要获取rgb 颜色的 坐标 |
- 返回值
[r,g,b] 三通道的颜色数组
- 示例
from ascript.ios import screen
image = screen.capture()
r, g, b = screen.image_pixel(image, 0, 0)
print(r, g, b)
旋转图像
screen.image_rotate(image: Image.Image, angle: int, expand: bool = True)
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| image | Image.Image | 是 | 图片对象,来源于文件读取,或者屏幕截图 |
| angle | int | 是 | 旋转角度 |
| expand | bool | 否 | 旋转后,是否保证所有图像都在范围内,默认True |
- 返回值
PIL.Image.Image PIL Image图像.
- 示例
from ascript.ios import screen
image = screen.capture()
new_image = screen.image_rotate(image, 90, True)
图像压缩
screen.image_compress(image: Image.Image, quality=50, _format='PNG')
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| image | Image.Image | 是 | 图片对象,来源于文件读取,或者屏幕截图 |
| _format | str | 否 | 要格式化的图片格式,默认'PNG' 其他如:'JPG' |
| quality | int | 否 | 清晰度 |
- 返回值
PIL.Image.Image PIL Image图像.
- 示例
from ascript.ios import screen
image = screen.capture()
new_image = screen.image_compress(image, 50)
图片转base64
screen.image_to_base64(image: Image.Image = None, image_file: str = None, image_format='PNG', decode: str = "utf-8")
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| image | Image.Image | 否 | 要转base64的图片 |
| image_file | str | 否 | 要转base64的图片文件,和image 参数只能存在一个 |
| image_format | str | 否 | 转换图片格式,默认PNG |
| decode | str | 否 | 编 码格式,默认"utf-8" |
- 返回值
str base64编码字符串
- 示例
from ascript.ios import screen
image = screen.capture()
b64str = screen.image_to_base64(image)