代码之家  ›  专栏  ›  技术社区  ›  SamHoque

使用Python截屏ADB

  •  0
  • SamHoque  · 技术社区  · 2 年前

    因此,我试图截图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解决方案

    1 回复  |  直到 2 年前
        1
  •  1
  •   Dan Harms    2 年前

    尝试使用 exec-out 而不是 shell

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