Skip to main content

屏幕图像

通用模块

本模块在 WDA 和 HID 模式下均可使用。截图方法会自动选择合适的方式(HID 模式使用录屏扩展,WDA 模式使用 WDA 截图)。

from ascript.ios import screen

从屏幕中 获取图像数据, 图像转换 等操作

屏幕图像

截取屏幕图片

获取当前屏幕截图,返回物理像素尺寸的图像。

  • 函数
screen.capture(rect=None, format=screen.FORMAT_PIL_IMAGE)
  • 参数
参数类型是否必填说明
recttuple裁剪区域 (x1, y1, x2, y2),物理像素坐标
formatstr返回格式,screen.FORMAT_PIL_IMAGE(默认) 或 screen.FORMAT_CV_MAT
  • 返回值

format=FORMAT_PIL_IMAGE 时返回 PIL.Image.Imageformat=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) # 关闭缓存
  • 参数
参数类型是否必填说明
_cacheboolTrue 开启缓存,False 关闭缓存
imagePIL.Image指定缓存图片,默认自动截图
image_filestr指定缓存图片文件

查询当前是否处于缓存状态:

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_pathstr图片文件路径
  • 返回值

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)
  • 参数
参数类型是否必填说明
imageImage.Image图片对象,来源于文件读取,或者屏幕截图
pathstr要存储的图片路径
  • 示例
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)
  • 参数
参数类型是否必填说明
imageImage.Image图片对象,来源于文件读取,或者屏幕截图
recttuple要裁剪的区域数组 如(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)
  • 参数
参数类型是否必填说明
imageImage.Image图片对象,来源于文件读取,或者屏幕截图
x,yint要获取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)
  • 参数
参数类型是否必填说明
imageImage.Image图片对象,来源于文件读取,或者屏幕截图
angleint旋转角度
expandbool旋转后,是否保证所有图像都在范围内,默认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')
  • 参数
参数类型是否必填说明
imageImage.Image图片对象,来源于文件读取,或者屏幕截图
_formatstr要格式化的图片格式,默认'PNG' 其他如:'JPG'
qualityint清晰度
  • 返回值

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")
  • 参数
参数类型是否必填说明
imageImage.Image要转base64的图片
image_filestr要转base64的图片文件,和image 参数只能存在一个
image_formatstr转换图片格式,默认PNG
decodestr编码格式,默认"utf-8"
  • 返回值

str base64编码字符串

  • 示例
from ascript.ios import screen
image = screen.capture()
b64str = screen.image_to_base64(image)