想区域截图,但是在网上找了一圈,没有什么有用的信息,基本都是全屏截图的信息。最后只能自己尝试着摸索了。

已知d.screenshot()是截取整个屏幕,尝试根据元素截图d(resourceId="xx.xx.xx").screenshot截图,发现可以截取指定元素区域,具体代码如下

d = u2.connect("192.168.10.10")
d(resourceId="com.xxx.xxx:id/tv_close").screenshot().save("test.png")

既然能截取元素区域的图片,那肯定能够截取指定区域的图片,遂查看screenshot的实现逻辑(在_selector.py里),代码如下

def screenshot(self) -> Image.Image:im = self.session.screenshot()return im.crop(self.bounds())

主要就是self.bounds()这个函数,继续点进去查看,发现截图区域的坐标是调用元素的info信息获取的

def bounds(self):"""Returns:left_top_x, left_top_y, right_bottom_x, right_bottom_y"""info = self.infobounds = info.get('visibleBounds') or info.get("bounds")lx, ly, rx, ry = bounds['left'], bounds['top'], bounds['right'], bounds['bottom'] # yapf: disablereturn (lx, ly, rx, ry)

所以,我们只需要重写一下screenshot函数即可,传入我们指定的坐标。

(只简单重写,本着能用就行的原则,部分异常未做处理)

    def screenshot(self,bounds=None) -> Image.Image:im = self.session.screenshot()if isinstance(bounds, tuple) and len(bounds)==4:try:ret = im.crop(bounds)except:raise "poition error"return Falseelse:return retreturn im.crop(self.bounds())

截图时传入 (lx, ly, rx, ry)  4个坐标即可

缺点就是,调用的时候只能用  d.(元素定位信息).screenshot((lx, ly, rx, ry)).save("xx.png"),不能直接使用d.screenshot()这种方法调用。

Python+uiautomator2指定区域截图相关推荐

  1. python中paste函数的作用,python图片指定区域替换img.paste函数的使用

    今天用到了img.paste函数,就写篇笔记记录一下,方便回顾. 做人脸检测,产生负样本的时候想把图片中人连部分用背景的某一部分替换掉,然后再随机裁剪产生负样本,这样比随机裁剪的时候避开人脸区域应该实 ...

  2. iOS 截图 对view指定区域 以及 对图片 指定区域截图

    //MARK:获取截图,对view 制定区域截图static func getCropImage(_ view:UIView,size:CGSize) -> UIImage {//false是透 ...

  3. Python实现Excel根据指定区域截图(Windows版本)

    # -*- coding:utf-8 -*- __author__ = 'yangxin_ryan' from win32com.client import Dispatch, DispatchEx ...

  4. 用python截取指定网页截图

    可以使用 Python 库 "Selenium" 和 "pillow" 来截取指定网页的截图. 首先需要安装 Selenium 和 pillow,使用 pip ...

  5. OpenCV—Python 图像指定区域裁剪

    文章目录 一.指定图像位置的裁剪处理 二.批量处理-指定图像位置的裁剪 三.多进程(加快处理) 在工作中.在做数据集时,需要对图片进行处理,照相的图片我们只需要特定的部分,所以就想到裁剪一种所需的部分 ...

  6. 浏览器截图方法(长截图、node截图、指定区域截图)

    1.打开需要截屏的页面,按键盘上的F2(或者Ctrl+Shift+I)打开浏览器控制台 2.Ctrl+shift+P进入搜索框,输入"screen": 这里有四种截图模式,点击需要 ...

  7. LINUX选定区域截图

    初学LINUX,记录截图命令,方便自己,方便他人. -------------------------------UBUNTU 16.04------------------------------- ...

  8. 自定义ImageView系列 - 区域截图(下)

    功能要点: - 根据控件自身大小计算合适的透明正方形预览区: - 截取预览区图像并按照指定的尺寸缩放,生成Bitmap对象. 本文着重介绍上述第2个要点. 有关第一个要点的内容,请参阅上一篇文章:请点 ...

  9. Python实现计算机屏幕任意区域截图

    程序功能与用法:运行后有个主窗体,上面有个按钮,单击后开始截图,鼠标坐标落下开始截图,鼠标左键抬起表示截图结束,然后弹出对话框提示保存截图文件. 本文要点在于Python扩展库pillow提供的Ima ...

最新文章

  1. Properties文件读取学习笔记
  2. Math4DS 直播 NO.10 | “机器学习之父”、加州大学伯克利分校迈克尔·乔丹
  3. 利用JSP编写程序初步
  4. STL源码剖析 关联式容器
  5. ModBus协议寄存器
  6. 36Kr鬼畜推送,没事别惹程序员
  7. 神秘TTY:The TTY demystified
  8. iPhone:你知道这 13 年我是怎么过的吗?
  9. Python学习入门基础教程(learning Python)--4.2.3 Python的for实现递归,(0629学习笔记)我研究出来了!...
  10. 网页版简书界面优化小建议
  11. python 查找excel标红的数据_excel表格如何快速给数据标红-如何将查找出的excel内容批量标记为红色?...
  12. 贤华老师教你正确护肤,卸妆第一步 选择卸妆产品很重要
  13. 腾讯云弹性微服务TEM
  14. 硬盘测试软件cry,CrystalDiskMark测试硬盘官方版
  15. 学一点Wi-Fi: CCMP
  16. 做微信还是做APP,两种选择的不同风险
  17. Electron在win7上加载plotyjs失败的解决方法
  18. java+小时转为分钟_用java将12862秒转换成 N 小时,K 分钟,M 秒
  19. 移动云迁移工具:Xen虚拟化迁移到移动云
  20. C语言牛牛手里有一个字符串A,程序设计语言C实验卡学生.doc

热门文章

  1. Kali之Crunch:自定义字典
  2. python 如何使用正则表达式
  3. 折叠面板的改进【Amaze UI】
  4. python实现AES对文件加解密(这里使用ECB密码本模式)
  5. 面试题:堆、栈、队列的区别以及使用场景
  6. CMMI认证是什么?有哪些等级?价值体现在哪里?
  7. 怎么样成为java架构师_java架构师工资一般多少?怎样成为架构师?
  8. 使用matlab对图像进行傅里叶变换
  9. Linux学习日志-01
  10. 详解磁盘配额的设置方法