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即可。
相關推薦
python使用adb獲取Android Phone截圖(解決Windows傳輸編碼導致png檔案損壞的問題)
使用adb命令 ./adb shell screencap -p 可以擷取當前螢幕,並且作為stdout,傳給外部。那麼對於python,我們可以用如下程式碼獲取資料流。 使用Popen建立子程序用於讀取資料流。 import subprocess out=subprocess.Po
android後臺獲取當前螢幕截圖(screencap.cpp修改)
本文基於android6.0。首先找到screencap在Android原始碼中的位置,若不清楚,可以通過在android目錄下通過命令find . -namescreencap.cpp。本文直接給出路徑/android/frameworks/base/cmds/s
android 介面截圖(目前速度最快)
android 介面截圖不算新鮮事,以前本人也寫過一篇關於螢幕截圖的部落格,當時的需求是整體截圖,然後對特有的區域進行二次截圖,功能算是實現了,體驗不是很好 ,週期太長。雖然使用者感受不到,但是作為一個強迫症的程式設計師。會花時間追求更快的體驗。 以前的截圖是採用anr
Android自動化——截圖(一)
本方法為: 直接獲取到一個view,然後通過View的Cache來獲取一個bitmap物件,然後將bitmap物件寫到影象檔案。 主activity: package com.zhf.ScreenshotDemo; import Android.a
FrameBuffer中獲取Android螢幕截圖
引子 我們知道,DDMS可以很容易的獲取Android 手機 的螢幕截圖,那麼它是怎麼做到的呢? 其實,android手機上有一個叫做FrameBuffer的裝置,影象資訊都是通過FrameBuffer寫到手機螢幕上去的。因此可以通過讀取此裝置中的資料來獲取當前正在顯示的影象。當然DDMS也是這麼做到
java PC端獲取android手機截圖使用ddmlib
http://blogs.360.cn/360qtest/2014/02/28/%E9%80%9A%E8%BF%87ddmlib%E5%AE%9E%E7%8E%B0%E6%88%AA%E5%9B%BE%E4%BB%A5%E5%8F%8A%E8%8E%B7%E5%8F%96
獲取 Android 模擬器root 許可權(解決data許可權問題)
1,進入SDK 安裝目錄: 並進入 platform-tools 目錄: 2,按住Shift按鍵 對準視窗右擊滑鼠。 3,選擇 在此處開啟 命令視窗: 輸入命令:adb rem
iOS對UIView物件或子類物件截圖(擷取的內容以UIImage的形式儲存)
怎麼樣用程式碼寫出擷取螢幕內容,並讓擷取到的內容以UIImage的形式儲存顯示?從iOS7開始,UIView就提供了一個方法:drawViewHierarchyInRect:afterScreenUpdates:,它允許擷取UIView或者其之類中的內容,並且以點
獲取android應用簽名證書(打包APK用到的那個檔案)的SHA1,MD5,SHA256值
今天,看到(百度地圖android SDK 2.1.3以及之後的版本)的申請KEY中 安全碼需要用到:簽名證書SHA1的值。 1.使用CMD(命令列視窗),進入簽名檔案所在的目錄 2.輸入命令:keytool -list -v -keystore debug.ke
MFC通過控制代碼後臺獲取截圖(僅僅支援directx)
作為一個癢癢鼠玩家,由於太多重複性操作,所以決定寫個小指令碼,但是又不會按鍵精靈,索性用的MFC,目前發現對opengl渲染方式截圖的話只會返回一個白麵,所以桌面版涼涼,只能安卓模擬器能用得到了。控制代碼查詢的話,可以用如下語句: HWND pWnd = ::FindWindowW(NULL, _
Android如何獲取視訊預覽圖(或首幀)和獲取視訊時長
Android獲取視訊預覽圖(或首幀)和獲取時長需要用到MediaMetadataRetriever類,獲取預覽圖使用getFrameAtTime()方法,獲取時長使用extractMetadata(MediaMetadataRetriever.METADATA_KEY_DU
【Android】WebView核心與XWalk核心獲取螢幕內容截圖總結
1.專案中使用到的截圖方法: public static Bitmap getWebViewContentShot(final View view) { if (view == null) retur
Android獲取View的截圖,包括各種Layout的截圖
Layout生效後才能使用 /** * 獲取Layout截圖 * * @return 所需區域的截圖 */ private Bitmap getBitmap() { rel_content.setDrawing
Android實現截圖方式整理(總結)
http://www.jb51.net/article/119881.htm本文介紹了Android 實現截圖方式整理,分享給大家。希望對大家有幫助可能的需求:截自己的屏截所有的屏帶導航欄截圖不帶導航欄截圖截圖並編輯選取一部分自動擷取某個空間或者佈局擷取長圖在後臺去截圖1.
穩定獲取Android裝置唯一碼(UUID)的解決方案
最近做的一個專案中需要用到Android裝置唯一碼(UUID)來標識一臺裝置, Android中裝置唯一碼有很多,如:MAC地址、IMEI號(DeviceId)、IMSI號、ANDROID_ID、序列號(SerialNumber)等, 但並不是所有裝置上都能穩定獲取到這些值。 最後專案中採用的是MAC地址
Android截圖(fb0)
1.申請獲取root許可權,這一步很重要,不然會沒有作用 private void getPermession() { try { Process process = Ru
Android之許可權檢查(解決未獲取使用者許可權允許)
本文主要是記錄一些零碎的東西 最近在專案中發現需要做Android的許可權檢查,要不然會在某些機型上失敗。 但是這些都不足以解決我的問題,我遇見的是在某些機型上失敗,沒有彈出需要獲取許可權的彈窗,個人感覺主要的解決方案就是 try-catch 或者 if 判斷一下,以讀
android 獲取當前fragment單個物件(解決fragment返回鍵問題)
在做fragment返回的時候,因為fragment裡不能直接寫onKeyDown方法,所以只能在fragmentactivity裡操作(我的fragment都是依附在fragmentactivity上的,通過tabhost顯示出來)。在這邊有兩種方法: 方法
Android系統截圖的實現(附程式碼)
1.背景 寫部落格快兩年了,寫了100+的文章,最火的文章也是大家最關注的就是如何實現android系統截圖。其實我們google android_screen_shot就會找到很對
Android--獲得螢幕高寬,螢幕截圖(包括或不包括狀態列)
記錄下這些常用的方法,方便以後開發使用,貼程式碼: //獲得螢幕相關的輔助類 public class ScreenUtils { private ScreenUtils() { /* cannot be instantiate