Skip to main content

屏幕图像

from ascript.android import screen

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

方法

屏幕缓存

屏幕图像数据 缓存至某一时刻 ,后续所有的图色操作都基于缓存运行.

  • 函数
screen.cache(is_cache:bool=False,bitmap=None,file=None)
  • 参数
参数类型是否必填说明
is_cachebool是否缓存 True:缓存 False:取消缓存
bitmapBitmap图片对象是否将一张android bitmap 作为图色缓存 默认为None,缓存当前屏幕 如填入Bitmap参数,所有图色方法都从这个Bitmap图像中检测
file图片文件地址是否将一个图片文件作为图色缓存 默认为None,缓存当前屏幕如填入对应的图片文件地址,所有图色方法都从这个图片文件中检测
  • 示例
# 打开屏幕缓存
from ascript.android import screen

screen.cache(True)
# 关闭屏幕缓存
from ascript.android import screen

screen.cache(False)
# 将一个图片文件缓存为屏幕图像,所有图像方法都从这个图片文件中检测
from ascript.android import screen
from ascript.android.system import R

# 将sd卡中的a.png图片作为屏幕图像缓存起来.
screen.cache(False,file=R.sd("a.png"))

截屏

获取一张当前屏幕的内存截图,截图格式为 Android Bitmap

如果需要 将图像存储为文件,清参考 图像转文件

  • 函数
screen.capture(x:int=None,y:int=None,x1:int=None,y1:int=None)
  • 参数
参数类型是否必填说明
x,y,x1,y1int截图的矩形范围坐标 默认:全屏截图
  • 返回值

Bitmap Android图片对象

  • 示例
# 截取屏幕
from ascript.android import screen
bitmap = screen.capture()

print(bitmap)
# 截取 指定范围屏幕
from ascript.android import screen
bitmap = screen.capture( 122,358,808,979)
print(bitmap)

图像某坐标色值

获取图像指定坐标的颜色值

  • 函数
screen.get_color(x:int,y:int,bitmap = screen.capture())
参数类型是否必填说明
xint坐标x
yint坐标y
bitmapint指定图像,默认:全屏截图
  • 返回值

Color 颜色值对象,点击查看其内部属性值

  • 示例
from ascript.android import screen
color = screen.get_color(200,200)

print(color.rgb) #16进制RGB颜色值
print(color.argb) #16进制ARGB颜色值 PS:A位透明值通道
print(color.r,color.g,color.b,color.a) # 获取R通道,G通道,B通道,A通道 10进制颜色值

图像所有色值

获取整张图像所有色值

  • 函数
screen.get_colors(bitmap = screen.capture())
参数类型是否必填说明
bitmapint指定图像,默认:全屏截图
  • 返回值

int[] 10进制 颜色数组列表.可通过Color构造,获取RGB颜色值

  • 示例
from ascript.android import screen
from ascript.android.screen import Color
colors = screen.get_colors()

print(f"共有:{len(colors)}个颜色点")

for i in range(len(colors)):
# 打印出屏幕第一个点的颜色值
if i == 0:
c = Color(colors[i])
print(c.rgb)

区域颜色点数量

在一个区域内找 指定颜色点的数量

  • 函数
screen.get_color_num(colors:str,rect:list=None,sim:float=0.9)
  • 参数
参数类型是否必填说明
colorsint颜色值:
格式1: "#FFFFFF" 检索单一颜色值数量
格式2:"#FFFFFF|#000000" 多种颜色满足其一则算数
格式3:"#000000-#111111" 给定颜色值 在 两个颜色值之间则算数
rectlist屏幕范围
simfloat相似度 0~1之间,默认0.9:90%相似度
  • 返回值

Bitmap Android图片对象

  • 示例
# 获取屏幕中 #6989C5 和 #FF784B 颜色值数量
from ascript.android import screen
num = screen.get_color_num("#6989C5|#FF784B")

print(num)
# 获取屏幕指定范围内 #6989C5 和 #FF784B 颜色值数量
from ascript.android import screen
num = screen.get_color_num("#6989C5|#FF784B",rect =[413,358,709,578])

print(num)
# 获取屏幕指定范围内 #6989C5 和 #FF784B 相似度80% 的颜色点数量
from ascript.android import screen
num = screen.get_color_num("#6989C5|#FF784B",rect =[413,358,709,578],sim=0.8)

print(num)


图像转换

图像转文件

Android Bitmap 转存为文件

  • 函数
screen.bitmap_to_file(path:str,bitmap=screen.capture(),quality=100)
  • 参数
参数类型是否必填说明
pathstr文件路径
bitmapBitmap图片 默认:全屏截图
qualityint图片清晰度,1-100之间 ,100为100%无损图片 默认:100
  • 示例
# 将屏幕截图存储在SD卡下的1.png中
from ascript.android import screen
from ascript.android.system import R
screen.bitmap_to_file(R.sd("1.png"))
# 将屏幕截图存储在SD卡下的1.png中,清晰度设为80%
from ascript.android import screen
from ascript.android.system import R
screen.bitmap_to_file(R.sd("1.png"),quality=80)


文件转图片

文件 转存为Android Bitmap

  • 函数
screen.file_to_bitmap(path:str,sampleSize:int=1)
  • 参数
参数类型是否必填说明
pathstr文件路径
sampleSizeint采样率,如参数为2:每隔2行,2列采集1行,结果为原图的1/4大小 默认1:无损
  • 示例
# 将屏幕截图存储在SD卡下的1.png中
from ascript.android import screen
from ascript.android.system import R
bitmap = screen.file_to_bitmap(R.sd("2.png"))
print(bitmap)

图片转Base64数据

图片 转为 base64数据

  • 函数
screen.bitmap_base64(bitmap=screen.capture())
  • 参数
参数类型是否必填说明
bitmapBitmap图片 默认:将当前屏幕转为 base64数据
  • 示例
# 将屏幕图像转换为base64
from ascript.android import screen
b64_str = screen.bitmap_base64()
print(b64_str)

# 将文件转换为base64
from ascript.android import screen
from ascript.android.system import R

bitmap = screen.file_to_bitmap(R.sd("22222.png"))
b64_str = screen.bitmap_base64(bitmap)
print(b64_str)


图片最大边缩放

图片 缩放, 最大边不超过设定值,短边等比缩放.

  • 函数
screen.bitmap_maxside(bitmap=screen.capture(),max_side_len=9999)
  • 参数
参数类型是否必填说明
bitmapBitmap要缩放的图片 默认:当前屏幕截图
max_side_lenint最大边长度 ,默认最大边长 9999
  • 示例
# 将当前屏幕截图,最大边缩放到800
bitmap= screen.bitmap_maxside(screen.capture(),max_side_len=800)
print(bitmap.getWidth(),bitmap.getHeight())

Bitmap 转 Python Image

Android Bitmap 转换为 Python Image(PIL)

  • 函数
screen.bitmap_to_pilimage(bitmap=capture())
  • 参数
参数类型是否必填说明
bitmapBitmap要转换的Bitmap图像 默认:当前屏幕截图
  • 返回值

Image Python PIL 图像

  • 示例
# 将当前屏幕Bitmap 转换为 Python Image
from ascript.android import screen
img= screen.bitmap_to_pilimage()
print(img.width,img.height)

Bitmap 转 Opencv Image

Android Bitmap 转换为 Opencv Image

由于android图像是 ARGB通道 ,因此在转换后会丢失A通道,并且图像数据 为BGR三通道格式

  • 函数
screen.bitmap_to_cvimage(bitmap=capture())
  • 参数
参数类型是否必填说明
bitmapBitmap要转换的Bitmap图像 默认:当前屏幕截图
  • 返回值

Numpy array Python Opencv Image

  • 示例
# 将当前屏幕Bitmap 转换为 Openv Image  = cv2.imread
import cv2
from ascript.android.ui import ImageWindow
from ascript.android import screen

image = screen.bitmap_to_cvimage()

# 展示图片
ImageWindow.show(image)


Opencv Image 转 Bitmap

Opencv Image 转换为 Android Bitmap

将BGR通道的CV图像 转换为 Bitmap(RGB)

  • 函数
screen.cvimage_to_bitmap(image)
  • 参数
参数类型是否必填说明
imageopencv image要转换的Opencv Image
  • 返回值

Bitmap Python PIL 图像

  • 示例
# 将当前屏幕Bitmap 转换为 Openv Image  = cv2.imread
from ascript.android import screen
img= screen.bitmap_to_cvimage()
print(img)

图像Bitmap

from android.graphics import Bitmap

在Android 中的内存图像对象

宽度与高度

获取图像宽度

  • 示例
from ascript.android import screen
bitmap = screen.capture()
print(bitmap.getWidth(),bitmap.getHeight())

颜色

from ascript.android.screen import Color

创建一个颜色

创建一个颜色值,用于颜色值转换,和值的获取

  • 函数
Color(color_argb:int)
  • 参数
参数类型是否必填说明
color_argbint图像所有色值 该方法返回结果中的Int值 (实际为ARGB的色值)
  • 示例
# __init__.py 为初始化加载文件

from ascript.android import screen
from ascript.android.screen import Color
colors = screen.get_colors()

# 获取第一个int颜色值
color_int = colors[0]
# 转换为 Color对象,方便对颜色值进行转换
color = Color(color_int)

print(color.rgb)

属性

属性返回类型说明
rintR通道 10进制 颜色值
gintG通道 10进制 颜色值
bintB通道 10进制 颜色值
aintA通道(透明值) 10进制 颜色值
rgbstr16进制 RGB颜色值
argbstr16进制 ARGB颜色值
  • 示例
from ascript.android import screen
from ascript.android.screen import Color
colors = screen.get_colors()

# 获取第一个int颜色值
color_int = colors[0]
# 转换为 Color对象,方便对颜色值进行转换
color = Color(color_int)

print(color.rgb) #16进制RGB颜色值
print(color.argb) #16进制ARGB颜色值 PS:A位透明值通道
print(color.r,color.g,color.b,color.a) # 获取R通道,G通道,B通道,A通道 10进制颜色值