前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python写一个像QQ可快捷键唤起区域截屏的应用

Python写一个像QQ可快捷键唤起区域截屏的应用

作者头像
一墨编程学习
发布2019-05-30 18:39:07
2.4K1
发布2019-05-30 18:39:07
举报
文章被收录于专栏:程序员的知识天地

1.截屏应用功能拆解

先把要实现哪些功能罗列一下,功能拆解好了,程序设计时就比较清晰。

1).首先要能响应快捷键调起截屏程序,像QQ使用Ctrl+shift+B可以截屏一样;

2).然后就是截图功能,可以用鼠标选取截取的区域;

3).最后是要把截屏保存为本地图片。

2.做一下技术调研

功能拆解出来了,就开始调查下实现难度,有没有现成的第三方库可用,Python是出了名的库多,多找一找总会找到的。

搜寻了一下Python有截图功能的库,基本都是全屏截图和程序输入坐标来区域截图,没办法用鼠标选择可视化截图。不过网上有同学提出通过写一个GUI程序,把全屏截图展示在这个GUI界面上,然后在GUI上可以实现鼠标可视化选取功能。

看起来还不错,因为之前用过Tkinter,所以就用Tkinter来做GUI了,不过很久没写,手也生得很。

Tkinkter可以监听键盘事件,但是只有当焦点在Tkinter上时才会响应键盘事件,而截图应用是截其他地方的图,比如浏览器,聊天软件等等,焦点这时肯定不在Tkinter上,所以需要另找一个可以全局监听键盘事件的库,pynput就进入了法眼。

跟截图图片处理的话,首先就想到PIL库,它的ImageGrab方法能够全局截图,也能传入坐标实现区域截图,就选PIL了。

一番搜寻下来确定了实现方法:

使用pynput库来监听键盘,使用Tkinter来做GUI,使用PIL的ImageGrab来截图。

详细的实现原理是:

当程序运行起来后就在后台监听键盘,当键盘按下ctrl+shift+M时就使用PIL做全屏截图,接着用Tkinter把全屏截图显示出来,通过Tkinter的画布(canvas)和鼠标选取做二次截图。

3.开始写截图代码了

pynput、Tkinter、PIL官方和网上都有示例,拿过来改一改,把他们逻辑串在一起就可以调试了。

监听键盘代码如下:

截图、调用TK、二次截图主逻辑如下:

想加一个演示效果的,结果录屏软件弄了很久,视频分辨率都不理想,汗!

100多行代码搞定快捷键截屏功能,这就是用Python的好处,各种小功能都有解决方案,主要花的事情是拆解功能,选定实现路径。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.05.09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.截屏应用功能拆解
  • 2.做一下技术调研
  • 3.开始写截图代码了
相关产品与服务
图片处理
图片处理(Image Processing,IP)是由腾讯云数据万象提供的丰富的图片处理服务,广泛应用于腾讯内部各产品。支持对腾讯云对象存储 COS 或第三方源的图片进行处理,提供基础处理能力(图片裁剪、转格式、缩放、打水印等)、图片瘦身能力(Guetzli 压缩、AVIF 转码压缩)、盲水印版权保护能力,同时支持先进的图像 AI 功能(图像增强、图像标签、图像评分、图像修复、商品抠图等),满足多种业务场景下的图片处理需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档