python 几种android截屏方式的学习与使用
screencap
screencap是Android的截屏工具。通过调用访问SurfaceFlinger服务或读取 /dev/graphics/fb0文件来实现屏幕截取。
方法:
- 直接获得图片的二进制数据,然后解析成相应的图片
import subprocess
import cv2
import numpy as np
def get_screenshot():
# 使用subprocess的Popen调用adb shell命令,并将结果保存到PIPE管道中
process = subprocess.Popen('adb shell screencap -p', shell=True, stdout=subprocess.PIPE)
# 读取管道中的数据
screenshot = process.stdout.read()
# 将读取的字节流数据的回车换行替换成'\n'
binary_screenshot = screenshot.replace(b'\r\n', b'\n')
# 使用numpy和imdecode将二进制数据转换成cv2的mat图片格式
img_screenshot = cv2.imdecode(np.frombuffer(binary_screenshot, np.uint8), cv2.IMREAD_COLOR)
return img_screenshot
- 将截图保存成png图片,然后pull到电脑端再读取
import subprocess
import cv2
def adb(order):
return subprocess.Popen(order, shell=True, stdout=subprocess.PIPE, encoding='UTF-8').stdout
def get_screenshot():
adb('adb shell /system/bin/screencap -p /sdcard/screenshot.png') # 将截图保存到SDCard
adb('ad

本文介绍了使用Python在Android设备上进行截屏的三种方式:screencap通过访问SurfaceFlinger或读取fb0文件;appium作为一个自动化测试工具,支持原生、Web和混合应用的截图;minicap是STF项目的一部分,能连续获取屏幕图像。针对minicap连续传输的特点,文章提出了通过断开socket连接来确保获取当前图片的方法。
最低0.47元/天 解锁文章
1319

被折叠的 条评论
为什么被折叠?



