1. 程式人生 > >python使用adb獲取Android Phone截圖(解決Windows傳輸編碼導致png檔案損壞的問題)

python使用adb獲取Android Phone截圖(解決Windows傳輸編碼導致png檔案損壞的問題)

使用adb命令

./adb shell screencap -p

可以擷取當前螢幕,並且作為stdout,傳給外部。那麼對於python,我們可以用如下程式碼獲取資料流。

使用Popen建立子程序用於讀取資料流。

import subprocess
out=subprocess.Popen('./adb shell screencap -p',stdout=subprocess.PIPE)

out是當前的Popen例項,考慮到Windows接收過程中,會把\n當作\r\n寫入流中,進而導致png檔案打不開。

所以用replace修復資料流。

out=out.stdout.read().replace(b'
\r\n', b'\n')

這裡得到的out就是正常的二進位制資料了,將其以wb的模式寫成.png即可。