一、準備工具
二坝橡、使用python獲取手機的截屏
1泻帮、控制手機對當前屏幕進行截屏
直接在有adb.exe
的文件夾里按住shift + 鼠標右鍵——>點擊在次處打開命令窗口
,這種方式不用配置全局命令计寇,更加方便一些锣杂,如果要弄成全局命令的話脂倦,那么就可以百度,參考別人的經(jīng)驗元莫,是非常全面的赖阻。
import os
os.system('adb shell screencap -p /sdcard/screen.png')#讓手機截屏存儲在手機的根目錄
運行完了之后會在 手機根目錄 會出現(xiàn)screen.png
圖片文件,表明截圖成功
2踱蠢、獲取截屏到電腦的當前文件夾里
os.system('adb pull /sdcard/screen.png')#獲取這個截圖到當前電腦當前文件夾下
成功之后會在當前文件夾里面會有這個截圖(可以看得到)
三火欧、顯示圖片
顯示這里使用的是PIL
庫、numpy
庫以及matplotlib.pyplot as plt
茎截,下面是代碼片段
def get_screen_image():
os.system('adb shell screencap -p /sdcard/screen.png')#讓手機截屏存儲在手機的根目錄
os.system('adb pull /sdcard/screen.png')
return = numpy.array(PIL.Image.open('screen.png'))#獲取圖片像素點的值
fig = plt.figure()#創(chuàng)建一個空白對象
ax = plt.imshow(get_screen_image(),animated = True)#顯示圖片信息
plt.show()
四苇侵、獲取兩次鼠標點擊位置信息
def on_calck(event, coor=[]):#綁定的鼠標單擊事件
coor.append((event.xdata, event.ydata))#獲取事件信息
if len(coor) == 2:#當點擊兩次之后
jump_to_next(coor.pop(), coor.pop())#計算跳躍距離與按壓時間,并清除數(shù)據(jù)
figure.canvas.mpl_connect('button_press_event', on_calck)#獲取在figure區(qū)域的鼠標點擊事件的坐標
五企锌、計算兩次鼠標點擊距離榆浓、按壓時間、給出按壓指令
def jump_to_next(point1, point2):#計算兩次鼠標點擊位置的距離
x1, y1 = point1; x2, y2 = point2
distance = ((x2-x1)**2 + (y2-y1)**2)**0.5
os.system('adb shell input swipe 320 410 320 410 {}'.format(int(distance*1.35)))
六霎俩、循環(huán)更新截圖
為了便于跟新截圖哀军,這里使用一個全局變量 updateFlag = True or False
def update_screen(frame):#更新圖片 /從畫圖片
global need_update
if need_update:
time.sleep(1)
axes_image.set_array(get_screen_image())
need_update = False
return axes_image,
ani = FuncAnimation(figure, update_screen, interval=50, blit=True)
附:代碼
# !/usr/bin/env python
# -*- coding:utf-8 -*-
import os
import PIL,numpy
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
import time
need_update = True
def get_screen_image():
os.system('adb shell screencap -p /sdcard/screen.png')#獲取當前界面的手機截圖
os.system('adb pull /sdcard/screen.png')#下載當前這個截圖到當前電腦當前文件夾下
return numpy.array(PIL.Image.open('screen.png'))
def jump_to_next(point1, point2):#計算兩點之間的長度
x1, y1 = point1; x2, y2 = point2
distance = ((x2-x1)**2 + (y2-y1)**2)**0.5
os.system('adb shell input swipe 320 410 320 410 {}'.format(int(distance*1.35)))
def on_calck(event, coor=[]):#綁定的鼠標單擊事件
global need_update
coor.append((event.xdata, event.ydata))
if len(coor) == 2:
jump_to_next(coor.pop(), coor.pop())
need_update = True
def update_screen(frame):#更新圖片
global need_update
if need_update:
time.sleep(1)#暫停1秒
axes_image.set_array(get_screen_image())
need_update = False
return axes_image,
figure = plt.figure()#創(chuàng)建一個空白的圖片對象/創(chuàng)建一張圖片
axes_image = plt.imshow(get_screen_image(), animated=True)#把獲取的圖片話在坐標軸上面
figure.canvas.mpl_connect('button_press_event', on_calck)
ani = FuncAnimation(figure, update_screen, interval=50, blit=True)
plt.show()
感謝:潭州學(xué)院的直播課以及資料沉眶、網(wǎng)上的大牛
代碼執(zhí)行速度比較慢打却,但是可以實現(xiàn)功能,后期會修改增添一些功能谎倔,實現(xiàn)準確跳躍