该功能是本人用python写的小工具集Jamtools里面的截屏部分整合,代码完全原创,分享出来。

CSDN源码下载地址:https://download.csdn.net/download/Fandes_F/12318103

GitHub项目地址:https://github.com/fandesfyf/Jamscreenshot 记得点小星星h

转载请标明作者!

先上效果图:

可以看到,和微信QQ的截屏是十分相似的,还有微信QQ截屏没有的图片贴图等功能,工具栏在左侧

功能分析:

图片框选功能

图片遮罩功能(未选中的阴影显示)

鼠标放大镜功能(可调放大倍数)

贴图绘制功能(可以充当马赛克,还可以自定义绘制的材质贴图–达到绘图目的)

箭头(就是一个箭头贴图缩放而已)

圆形和方形绘制功能

文字绘制功能

画笔功能(大小可调)

橡皮擦功能(擦掉自己绘制的元素)

背景橡皮擦功能(擦掉截屏本来的图片元素)

最上面是设置画笔大小按钮、颜色选择按钮

从我的小工具集中提取出来后没有了控制界面,就简单地加了一个(确实有点简陋hhh),也随便设置了一下快捷键截屏ALT+Z(不是全局快捷键):

更复杂的界面自己可以改,

像我的Jamtools里面就做成了这个亚子

(没错,还有滚动截屏的部分暂时还没有开源,这篇文章不作讨论):

由于代码过长(差不多一千行了。。。可能我写的有点累赘,不过还能用hhh),这里就不贴了,可以直接下载,或者到GitHub下载(点小星星)。

这里只解说原理和基本思路(不然可能代码都看不懂)。。。。

了解原理

前置学习知识

需要一定的python基础才能看懂。。

需要了解一些pyqt5的常用类和结构。。

需要了解图层、遮罩等知识。。

功能分析

总体:

截屏的界面分三层,每一层都是一个Qlabel对象:

主窗体是一个去边框的Qlabel对象,用于显示背景的截屏图片;

中间层是绘画层,parent是主窗体的Qlabel,所有画笔功能都在这一层(除了背景橡皮擦);

最表面的是遮罩层,parent也是主窗体的Qlabel,用于显示选框,未选中的阴影显示,同时监测并绘制边框;

所有的画笔参数、鼠标位置参数等都用主窗体来监测;通过self.parent.xxx向子层传递;

Qlabel相当于画板,Qlabel中的Qpixmap相当于画纸,可以用Qpainter在上面绘画;

主要流程:

截屏后把截取的图片全屏显示在主窗体Qlabel的pixmap中,使用setPixmap()方法即可。将主窗体全屏显示,就可以实现图片位置和原来屏幕上的位置对齐。在屏幕上点击后记录下选框的第一个点,把位置传递给遮罩层,在遮罩层上绘制起点到鼠标位置的方框并显示阴影区;鼠标释放后显示确定等按钮,可以使用右键返回上一步,使用左边画笔工具在第二层的Qlabel上绘图;在用户点击确定后,收集截屏选框坐标,把背景层的原图片和绘画层绘制的轨迹另存为Qpixmap对象把两个Qpixmap对象绘制到一起,然后根据选框坐标裁剪图片,把图片数据输入到用户剪切板中。

其他的像如何设置画笔、绘图等请自行研究了。。。不想解释。。。。

再放一遍:

CSDN下载地址

GitHub项目地址

Jamtools下载地址

一个集截屏、录屏、格式转换、翻译、文字识别、图像识别、键鼠动作录制播放、聊天机器人等功能的工具集。完全免费,禁止贩卖!

滚动截屏部分等我有空了整理一下再发出来蛤

2020.4.9更新

增加了图片固定在屏幕上的功能!

增加了窗口控件识别功能,可以实现类似微信截屏启动时的自动选择窗口的功能(wx是直接查找窗口控件实现的),原理是基于opencv的轮廓识别功能,可以得到更详细的窗口控件识别(甚至能识别出一行行的文字!),具体源码自行摸索~

源码已更新上传

作者机械酱&Fandes

python 框选截图_python实现微信的区域截图功能相关推荐

  1. python个人微信支付接口_Python实现微信小程序支付功能

    正文 由于最近自己在做小程序的支付,就在这里简单介绍一下讲一下用python做小程序支付这个流程.当然在进行开发之前还是建议读一下具体的流程,清楚支付的过程. 1.支付交互流程 2.获取openid( ...

  2. python分配红包程序_Python版微信红包分配算法

    Python版微信红包分配算法 发布于 2015-05-08 10:54:23 | 151 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一种面向对象.解释型计算机 ...

  3. python微信小程序抢购_Python实现微信小程序支付功能!Python确实强的一批!

    正文 由于最近自己在做小程序的支付,就在这里简单介绍一下讲一下用python做小程序支付这个流程.当然在进行开发之前还是建议读一下具体的流程,清楚支付的过程. 1.支付交互流程 2.获取openid( ...

  4. 用Python 80行代码实现一个微信消息撤回捕捉功能

    自从微信出了这个消息撤回功能小编我都已经快被折磨死了,小编本来就是个好奇心比较重的人,微信出了这个功能之后小编感觉身体一天不如一天了,每次看着女神发来的信息又撤回,可谓是心里痒痒啊.所以小编就写了一个 ...

  5. ## 用python 80行代码实现一个微信消息撤回捕捉功能

    自从微信出了这个消息撤回功能小编我都已经快被折磨死了,小编本来就是个好奇心比较重的人,微信出了这个功能之后小编感觉身体一天不如一天了,每次看着女神发来的信息又撤回,可谓是心里痒痒啊.所以小编就写了一个 ...

  6. python给excel排序_Python实现EXCEL表格的排序功能示例

    Python实现EXCEL表格的排序功能示例 EXCEL的数值排序功能还是挺强大的,升序.降序,尤其自定义排序,能够对多个字段进行排序工作. 那么,在Python大法中,有没有这样强大的排序功能呢?答 ...

  7. python excel表格排序_Python实现EXCEL表格的排序功能

    EXCEL的数值排序功能还是挺强大的,升序.降序,尤其自定义排序,能够对多个字段进行排序工作. 那么,在Python大法中,有没有这样强大的排序功能呢?答案是有的,而且本人觉得Python的排序功能, ...

  8. python给excel排序_Python实现EXCEL表格的排序功能

    EXCEL的数值排序功能还是挺强大的,升序.降序,尤其自定义排序,能够对多个字段进行排序工作. 那么,在Python大法中,有没有这样强大的排序功能呢?答案是有的,而且本人觉得Python的排序功能, ...

  9. python屏幕文字识别_python 图片文字识别 可截图识别

    [Python] 纯文本查看 复制代码import osfrom aip import AipOcr import keyboard from PIL import ImageGrab from ti ...

  10. python编写性别比例_Python分析微信好友性别比例和省份城市分布比例的方法示例【基于itchat模块】...

    本文实例讲述了Python分析微信好友性别比例和省份城市分布比例的方法.分享给大家供大家参考,具体如下: 安装itchat pip install itchat 使用 新建wxfx.py,拷贝以下代码 ...

最新文章

  1. C#网页数据采集(三)HttpWebRequest
  2. mysql中文乱码的一点理解
  3. “RPC好,还是RESTful好?”
  4. hdu 1014 Uniform Generator 数论
  5. Centos7安装tengine-2.3.2版本
  6. tensorrt轻松部署高性能dnn推理_部署环境之:tensorRT的插件
  7. eclipse和jdk的版本问题,比如printf()出错
  8. 2019.3.9笔试
  9. 2018年内蒙古开出4.93亿环保罚单
  10. 淘宝云梯分布式计算平台架构
  11. mac安装热更新插件
  12. springboot json 嵌套_Java Bean Validation 2.0 (一): 对Spring Boot应用的数据验证
  13. java实现求数组中元素第二大的元素
  14. 20165234 《Java程序设计》第八周学习总结
  15. springboot 打 jar 包分离依赖 lib 和 配置文件
  16. C语言判断四个嫌疑犯问题,C语言谁是窃贼问题代码及解析
  17. 读书书签-《高等应用数学问题的MATLAB求解》第三版,薛定宇 陈阳泉著
  18. 如何获取21版0.3米分辨率全球卫星影像
  19. 微信小程序仿陶票票课程设计
  20. 工作说明书(SOW)

热门文章

  1. xcode打包IPA(完整详细图文)
  2. java 线程 block_JAVA线程的BLOCK状态实例分析
  3. Keil5下载芯片包并导入教程
  4. it超火图片熊猫头你最成功表情包合集
  5. 【HTML+CSS】移动端布局之流式布局
  6. 发货100全功能网站系统源码
  7. 微型计算机键盘ins代表,微型计算机技术69124.ppt
  8. ALSA架构应用程序aplay及amixer调用关系(应用层到内核驱动)
  9. java错误代码1061_求助java大神,看下这是哪里出错了
  10. 实验二线性表的链式存储结构