最全的python截屏方法

#!/usr/bin/env python #coding=utf-8  
import os import platform 
import tempfile 
import shutil  
from PIL import Image  
PATH = lambda p: os.path.abspath(p) 
TEMP_FILE = PATH(tempfile.gettempdir() + "/temp_screen.png")  
class Appium_Extend(object):     
def __init__(self, driver):         
self.driver = driver  
    
def get_screenshot_by_element(self, element):        
 #先截取整个屏幕,存储至系统临时目录下         
self.driver.get_screenshot_as_file(TEMP_FILE)          
#获取元素bounds         
location = element.location         
size = element.size         
box = (location["x"], location["y"], location["x"] + size["width"], location["y"] + size["height"])          
#截取图片         
image = Image.open(TEMP_FILE)         
newImage = image.crop(box)         
newImage.save(TEMP_FILE)          
return self     
 
def get_screenshot_by_custom_size(self, start_x, start_y, end_x, end_y):         
#自定义截取范围         
self.driver.get_screenshot_as_file(TEMP_FILE)         
box = (start_x, start_y, end_x, end_y)         
image = Image.open(TEMP_FILE)         
newImage = image.crop(box)         
newImage.save(TEMP_FILE)          
return self 
     
def write_to_file( self, dirPath, imageName, form = "png"):         
#将截屏文件复制到指定目录下         
if not os.path.isdir(dirPath):             
os.makedirs(dirPath)         
shutil.copyfile(TEMP_FILE, PATH(dirPath + "/" + imageName + "." + form)) 
     
def load_image(self, image_path):         
#加载目标图片供对比用         
if os.path.isfile(image_path):             
load = Image.open(image_path)             
return load         
else:             
raise Exception("%s is not exist" %image_path)      
#http://testerhome.com/topics/202     


def same_as(self, load_image, percent):         
#对比图片,percent值设为0,则100%相似时返回True,设置的值越大,相差越大         
import math         
import operator          
image1 = Image.open(TEMP_FILE)         
image2 = load_image         
 histogram1 = image1.histogram()         
histogram2 = image2.histogram()          
differ = math.sqrt(reduce(operator.add, list(map(lambda a,b: (a-b)**2,    histogram1, histogram2)))/len(histogram1))        
 if differ <= percent:             
return True         
else:             
return False
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值