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进阶之装饰器
May 11 Python
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
Jan 10 Python
Python爬虫基础之XPath语法与lxml库的用法详解
Sep 13 Python
python绘制已知点的坐标的直线实例
Jul 04 Python
python中web框架的自定义创建
Sep 08 Python
python将数组n等分的实例
Dec 02 Python
django ajax发送post请求的两种方法
Jan 05 Python
python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例
Mar 02 Python
Python socket服务常用操作代码实例
Jun 22 Python
浅析PyCharm 的初始设置(知道)
Oct 12 Python
Python+uiautomator2实现自动刷抖音视频功能
Apr 29 Python
用python开发一款操作MySQL的小工具
May 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
如何给phpadmin一个保护
2006/10/09 PHP
PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
2009/10/11 PHP
windwos下使用php连接oracle数据库的过程分享
2014/05/26 PHP
探寻PHP脚本不报错的原因
2014/06/12 PHP
php计算给定日期所在周的开始日期和结束日期示例
2017/02/06 PHP
thinkphp5.1 框架导入/导出excel文件操作示例
2020/05/25 PHP
jQuery第三课 修改元素属性及内容的代码
2010/03/14 Javascript
jQuery的实现原理的模拟代码 -1 核心部分
2010/08/01 Javascript
jQuery Validation实例代码 让验证变得如此容易
2010/10/18 Javascript
js中查找最近的共有祖先元素的实现代码
2010/12/30 Javascript
S2SH整合JQuery+Ajax实现登录验证功能实现代码
2013/01/30 Javascript
jQuery中[attribute!=value]选择器用法实例
2014/12/31 Javascript
浅谈nodeName,nodeValue,nodeType,typeof 的区别
2015/01/13 Javascript
js实现仿百度瀑布流的方法
2015/02/05 Javascript
浅谈JS中的bind方法与函数柯里化
2016/08/10 Javascript
BootStrap的table表头固定tbody滚动的实例代码
2016/08/24 Javascript
微信小程序 条件渲染详解
2016/10/09 Javascript
jQuery 插件实现随机自由弹跳气泡样式
2017/01/12 Javascript
微信小程序对图片进行canvas压缩的方法示例详解
2020/11/12 Javascript
[03:15]2014DOTA2国际邀请赛 专访国士无双信心满满
2014/07/12 DOTA
Python基于回溯法子集树模板解决最佳作业调度问题示例
2017/09/08 Python
django数据库migrate失败的解决方法解析
2018/02/08 Python
解决Django加载静态资源失败的问题
2019/07/28 Python
Spring http服务远程调用实现过程解析
2020/06/11 Python
Python环境管理virtualenv&virtualenvwrapper的配置详解
2020/07/01 Python
基于Python中Remove函数的用法讨论
2020/12/11 Python
微软香港官网及网上商店:Microsoft HK
2016/09/01 全球购物
自荐信包含哪些内容
2013/10/30 职场文书
如何写毕业求职自荐信
2013/11/06 职场文书
报社实习生自荐信
2014/01/24 职场文书
关于环保的活动方案
2014/08/25 职场文书
纪念9.18事变演讲稿
2014/09/14 职场文书
2014年银行员工工作总结
2014/11/12 职场文书
2014年企业党建工作总结
2014/12/18 职场文书
人事局接收函
2015/01/30 职场文书
人代会简报
2015/07/21 职场文书