Python编写屏幕截图程序方法


Posted in Python onFebruary 18, 2015

正在编写的程序用的很多Windows下的操作,查了很多资料。看到剪切板的操作时,想起以前想要做的一个小程序,当时也没做,现在正好顺手写完。

功能:按printscreen键进行截图的时候,数据保存在剪切板里面,很不方便。比如游戏的时候截一个瞬间的图片,但你不能退出游戏保存图片,不方便多次截图。而我也不喜欢安装各种软件,所以准备写这个工具。

思路:一个是自定义快捷键,截图,保存。考虑到很可能各种冲突,取消。然后还是用按printscreen来截图,然后从剪切板读取图片数据,保存。想法是,先监听键盘按键,当printscreen按键时,读取剪切板内容,最后保存图片到指定位置。

1 监听键盘按键:从网上找到资料,安装pywin32,pyhook。链接:http://sourceforge.net/projects/pyhook/,http://sourceforge.net/projects/pywin32/。教程:http://sourceforge.net/apps/mediawiki/pyhook/index.php?title=PyHook_Tutorial。

2 读取剪切板内容,也是需要pywin32.文档在:[Pythonpath]\Lib\site-packages\PyWin32.chm,在线的:http://timgolden.me.uk/pywin32-docs/index.html

文档中给出的几种格式都不是图片保存的数据,Google搜索“Standard Clipboard Formats”,链接:http://msdn.microsoft.com/en-us/library/windows/desktop/ff729168%28v=vs.85%29.aspx,所有的格式,主要就是1-17.

好在文档中有一个函数:GetPriorityClipboardFormat,可以返回剪切板中的格式,从一个迭代器中。于是手动输入找到了,y有时为6,win32con.CF_TIFF,还会为2。当然这里直接用返回数据就行了,不需要知道是什么。

主要用到:

OpenClipboard,CloseClipboard,GetPriorityClipboardFormat,GetClipboardData,这几个函数文档都有介绍,主要说说CloseClipboard,官方文档上讲,不要在剪切板里放置对象后调用CloseClipboard。

3 保存图片:

到这里发现可以直接用PIL模块,直接解决问题,上面太曲折T_T。

可以直接使用ImageGrab.grab() 进行抓屏,或者使用ImageGrab.grabclipboard()从剪切板获取图像。

 

最后变成,监听按键,按下printscreen后,用pil截图保存。T_T 感觉还不如设置快捷键,这样应该少占用内存。

Python 相关文章推荐
python实现FTP服务器服务的方法
Apr 11 Python
安装python3的时候就是输入python3死活没有反应的解决方法
Jan 24 Python
Python之csv文件从MySQL数据库导入导出的方法
Jun 21 Python
使用浏览器访问python写的服务器程序
Oct 10 Python
python 图片二值化处理(处理后为纯黑白的图片)
Nov 01 Python
一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系
Jul 03 Python
Python如何实现线程间通信
Jul 30 Python
Python Opencv轮廓常用操作代码实例解析
Sep 01 Python
python 模拟登录B站的示例代码
Dec 15 Python
python爬虫用request库处理cookie的实例讲解
Feb 20 Python
Python函数式编程中itertools模块详解
Sep 15 Python
Python使用socket去实现TCP客户端和TCP服务端
Apr 12 Python
Python处理RSS、ATOM模块FEEDPARSER介绍
Feb 18 #Python
Python内置函数Type()函数一个有趣的用法
Feb 18 #Python
Python中使用MELIAE分析程序内存占用实例
Feb 18 #Python
Python中的__SLOTS__属性使用示例
Feb 18 #Python
Python contextlib模块使用示例
Feb 18 #Python
Python中使用Inotify监控文件实例
Feb 14 #Python
Python中实现的RC4算法
Feb 14 #Python
You might like
IIS7.X配置PHP运行环境小结
2011/06/09 PHP
10个超级有用的PHP代码片段果断收藏
2015/09/23 PHP
PHP中PDO的事务处理分析
2016/04/07 PHP
既简单又安全的PHP验证码 附调用方法
2016/06/02 PHP
php插入含有特殊符号数据的处理方法
2016/11/24 PHP
php微信公众号开发之二级菜单
2018/10/20 PHP
Javascript 遮罩层和加载效果代码
2013/08/01 Javascript
javascript比较两个日期相差天数的方法
2015/07/24 Javascript
JS上传组件FileUpload自定义模板的使用方法
2016/05/10 Javascript
bootstrap模态框远程示例代码分享
2017/05/22 Javascript
vue配置接口域名方法总结
2019/05/12 Javascript
小程序云开发实现数据库异步操作同步化
2019/05/18 Javascript
[01:48]2018DOTA2亚洲邀请赛主赛事第二日五佳镜头 VG完美团战逆转TNC
2018/04/05 DOTA
[32:26]EG vs IG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[01:32]寻找你心中的那团火 DOTA2 TI9火焰传递活动今日开启
2019/05/16 DOTA
python实现文件快照加密保护的方法
2015/06/30 Python
Python的爬虫框架scrapy用21行代码写一个爬虫
2017/04/24 Python
Sanic框架配置操作分析
2018/07/17 Python
python版大富翁源代码分享
2018/11/19 Python
把pandas转换int型为str型的方法
2019/01/29 Python
python实现代码统计程序
2019/09/19 Python
Python实现实时数据采集新型冠状病毒数据实例
2020/02/04 Python
Python文件读写w+和r+区别解析
2020/03/26 Python
keras多显卡训练方式
2020/06/10 Python
Python的控制结构之For、While、If循环问题
2020/06/30 Python
H&M美国官网:欧洲最大的服饰零售商
2016/09/07 全球购物
20世纪40年代连衣裙和复古服装:The Seamstress Of Bloomsbury
2018/07/24 全球购物
什么是Smart Navigation?
2016/07/03 面试题
Prototype如何实现页面局部定时刷新
2013/08/06 面试题
自行车租赁公司创业计划书
2014/01/28 职场文书
酒店总经理助理职责
2014/02/12 职场文书
春节慰问信范文
2015/02/15 职场文书
拾金不昧通报表扬范文
2015/05/05 职场文书
idea搭建可运行Servlet的Web项目
2021/06/26 Java/Android
Spring Cloud 中@FeignClient注解中的contextId属性详解
2021/09/25 Java/Android
Go调用Rust方法及外部函数接口前置
2022/06/14 Golang