# Jamscreenshot
一个用python和pyqt5实现的类似微信QQ截屏的工具源码,提取自本人自制工具集[Jamtools](https://github.com/fandesfyf/JamTools)里面的截屏部分功能整合,代码完全原创,分享出来大家一起学习鸭! 转载请标一下出处谢谢!
> 注意这个仓库中的代码可能会落后于[Jamtools](https://github.com/fandesfyf/JamTools)仓库, 一般都是先更新到Jamtools之后再提取截屏功能的更新
- 如果你还需要滚动截屏功能, (本仓库中也已经集成了滚动截屏功能了)也可以看看[这个](https://github.com/fandesfyf/roll_screenshot)
- 录屏功能在[Jamtools](https://github.com/fandesfyf/JamTools)提供,有时间再整理出来
<!-- 个人资料徽标 -->
<div align="center">
<!-- <a href="https://twitter.com/fandesfyf/"><img src="https://img.shields.io/badge/twitter-%E6%8E%A8%E7%89%B9-blue"></a>  -->
<a href="https://blog.csdn.net/Fandes_F/"><img src="https://img.shields.io/badge/CSDN-%E5%8D%9A%E5%AE%A2-c32136"></a> 
<a href="https://space.bilibili.com/387051620/"><img src="https://img.shields.io/badge/bilibili-B%E7%AB%99-ff69b4"></a> 
<!-- 访客数统计徽标 -->
<img src="https://visitor-badge.glitch.me/badge?page_id=ssjam" alt="访客" /></div>
### 酱截屏(全局快捷键Alt+z)
- [Jamtools](https://github.com/fandesfyf/JamTools)中的截屏功能页面,包含隐藏窗口、自动保存文件、复制文件还是图像数据、滚动截屏等参数的配置,可以直接从release下载安装程序
![image](image/jp.png)
- 支持截屏时选区录屏、文字识别(离线)、翻译等
![image](image/截屏文字识别.gif)
- 截屏时有各种画笔橡皮擦工具、透视裁剪、油漆桶、多边形截图等工具
![image](image/jp0.jpg)
![image](image/jp1.jpg)
- 支持将截屏固定到屏幕上,固定的截屏可以快速放大缩小(鼠标滚轮)、设置透明度、边框、置顶、文字识别等方便的操作
![image](image/固定截屏.gif)
## 更新
----20230407更新------
增加了离线文字识别功能
----20210206更新------
新增了透视裁剪工具(类似于PS里的用法)、多边形截图工具、取色器工具、油漆桶工具、背景还原画笔(配合背景橡皮擦使用)、支持回退10步操作历史记录、新增一键还原按钮、新增智能选框的开关。画笔等增加透明度支持,在画笔/标记时可以通过按住ctrl键+滚轮快速调整画笔透明度,新增常用颜色到取色按钮(鼠标划过即可显示)、固定截屏在屏幕上时可以通过按住ctrl+滚轮快速调节截屏的透明度
# 效果图
加了一个简陋的主界面
![image](image/60430e4e61d28d0e79da9d58e46037f.png)
截图效果:
![image](image/jp00.png)
![image](image/jp2.png)
![image](image/58e820362dd287f6668e011e20a1020.png)
![image](image/0180a5748681abe7254ce6734aa64de.png)
可以看到,几乎实现了微信截图的所有功能,还有一些微信截图没有的功能,像材质图片画笔、背景橡皮擦、所有颜色自选、画笔大小/放大镜倍数可通过滑轮调节等;
代码总长2000+行,直接运行即可!
-----------------2020.4.9更新--------------
更新:
支持把多个图片固定在屏幕上
支持窗口控件识别(基于opencv的轮廓识别功能),需要opencv库!
直接pip install opencv-python即可(滚动截屏需要安装contrib版本的opencv,版本小于opencv-contrib-python==3.4.2.17)
# 模块安装
主要使用的是PyQt5模块
直接 pip install PyQt5 即可
还需要PIL
直接pip install Pillow 即可
附带的jamresourse.py文件是图片资源文件(鼠标样式等)
# 提交环境为python3.7 pyqt5==5.13.2 win10 一切正常!
其他环境自行测试
# 说一说大概的思路吧
截屏流程:
先分析用户动作:用户点击截屏按钮(或按下快捷键)时截屏软件开始响应(通过一个按钮事件或者pyqtsignal,其实都是signal,来调用起截屏函数screen_shot),迅速截下当前屏幕的全屏内容(通过pyqt的grabWindow函数),同时显示截屏界面。
对截屏界面有几点说明:
1.截屏界面就是一个全屏窗口而已,该窗口是一个label类型的控件(因此可以直接将其当做背景层)有置顶、无边框、鼠标追踪等属性
2.截屏界面由背景层(Slabel本身)、绘图层(PaintLayer类)和遮罩层(MaskLayer类)依次堆叠而成,每一层都是一个Qlabel,绘图层和遮罩成以Slabel作为parent,并调用self.parent.xxx直接获得Slabel的属性。背景层用于显示之前截屏时的那个全屏内容,因为之前那个截屏是全屏幕截的,当前窗口又是全屏窗口,所以显示背景中的内容的位置就是之前在屏幕中实际的位置,而且这个时间很短,看起来的结果就像是用户直接操作在屏幕上一样;第二层是绘图层,有透明背景属性,用于用户进行涂鸦等操作(画笔中除了背景相关的画笔几乎都作用于这一层);最上面一层是遮罩层,该层主要用于显示截屏的阴影部分和方框(只是显示而已,背后的逻辑还是在它的parent即Slabel中)
区域截屏过程:在进入截屏界面后用户可以点击屏幕(该动作由mousePressEvent捕获),然后拖动(由mouseMoveEvent捕获),然后松开(由mouseReleaseEvent捕获),同时弹出确定按钮(botton_box)即可在界面上显示出选区界面。
关于选框参数,所有参数均在Slabel主类中设置,self.x0,x1,y0,y1是选区的对角坐标,在用户点击下鼠标左键时,记录下当前的位置,然后动鼠标时记录下鼠标位置,当松开鼠标时记录下松开的位置.注意每次点击/移动/松开鼠标都会调用update函数使得所有层(包括遮罩层)的界面更新(即自动调用了paintEvent函数)
没有合适的资源?快使用搜索试试~ 我知道了~
jamscreenshot.zip
共33个文件
py:10个
png:9个
txt:2个
需积分: 5 0 下载量 52 浏览量
2023-07-14
16:39:45
上传
评论
收藏 31.43MB ZIP 举报
温馨提示
jamscreenshot.zip
资源推荐
资源详情
资源评论
收起资源包目录
Jamscreenshot-master.zip (33个子文件)
Jamscreenshot-master
old_version
jamscreenshot.py 57KB
jamresourse.py 3.13MB
jamroll_screenshot.py 17KB
image
jp.png 34KB
jp0.jpg 660KB
58e820362dd287f6668e011e20a1020.png 175KB
jp00.png 3.74MB
jp1.jpg 306KB
jp2.png 2.71MB
0180a5748681abe7254ce6734aa64de.png 564KB
截屏文字识别.gif 3.65MB
60430e4e61d28d0e79da9d58e46037f.png 3KB
固定截屏.gif 6.44MB
LICENSE 11KB
jamspeak.py 2KB
PaddleOCRModel
PaddleOCRModel.py 29KB
opencv_ocr.ipynb 34KB
00.png 33KB
11.png 214KB
modelv3
det_model.onnx 2.32MB
rec_model.onnx 10.17MB
ppocr_keys_v1.txt 26KB
README.md 1KB
jamWidgets.py 32KB
fake_useragent_0.1.11.json 42KB
jamscreenshot.py 119KB
j_temp
ocrtemp.png 7KB
requirement.txt 160B
jamresourse.py 3.52MB
jam_transtalater.py 8KB
.gitignore 2KB
jampublic.py 13KB
README.md 6KB
共 33 条
- 1
资源评论
小麻瓜soen
- 粉丝: 3
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 毕业设计求职招聘系统-SpringBoot+vue前后端源码+数据库sql.zip
- 利用Rosweb实现ros与网页交互(1)
- 基于卷积神经网络的医学病理图像识别源码+数据集+详细资料合集.zip
- 基于树莓派的自动驾驶小车,利用树莓派和tensorflow实现小车在赛道的自动驾驶
- 前端面试必备 - Vue篇.rar
- LM324_datasheet.pdf
- 全新Storm+Core+API管理系统源码
- 基于RP2040的电子沙漏,使用RP2040游戏机开发板,灯板是74HC595驱动的8*8LED矩阵
- 基于SSM和VUE的商店POS积分管理系统(免费提供全套java开源项目源码+论文)
- 基于SpringBoot的“在线动漫信息平台”的设计与实现.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功