使用 Python 截取 ADB

Screenshotting ADB using Python

所以我正在尝试截取 adb 并纯粹从 Python 处理它,因此用户设备上不会保存任何文件。

我为此创建了以下辅助函数

def adb_run(command, verbose=False):
    result = subprocess.run([r"D:\Program Files\Nox\bin\adb.exe"] + command, stdout=subprocess.PIPE, errors="ignore")
    if verbose:
        print(result.stdout)
    return result


def shell(command, verbose=False):
    return adb_run(['shell', command], verbose)


def screencap():
    return shell(f"screencap -p")

然后我调用了 screencap() 函数并将其写入文件,内容似乎是一个有效的 PNG 文件,但我无法加载 png 文件,因为它说它已损坏

capped = screencap().stdout
with open("screencap.png", "wb") as f:
    f.write(capped.encode())

有谁知道为什么镜像文件会损坏?我还没有在网上找到任何纯粹的 python 解决方案

尝试使用 exec-out 而不是 shell

def screencap(filename):
    return adb_run(['exec-out', f'screencap -p > {filename}'])