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