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正则表达式match和search用法实例
Mar 26 Python
python开发之函数定义实例分析
Nov 12 Python
Python每天必学之bytes字节
Jan 28 Python
Python利用IPython提高开发效率
Aug 10 Python
深入理解Python单元测试unittest的使用示例
Nov 18 Python
Python实现的凯撒密码算法示例
Apr 12 Python
python实现黑客字幕雨效果
Jun 21 Python
python+opencv+caffe+摄像头做目标检测的实例代码
Aug 03 Python
学生信息管理系统python版
Oct 17 Python
python自动点赞功能的实现思路
Feb 26 Python
Python实现GIF图倒放
Jul 16 Python
python如何导出微信公众号文章方法详解
Aug 31 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
PHP动态图像的创建
2006/10/09 PHP
php生成excel文件的简单方法
2014/02/08 PHP
PHP实现根据数组的值进行分组的方法
2017/04/20 PHP
Mootools 1.2教程 Fx.Tween的使用
2009/09/15 Javascript
50个比较实用jQuery代码段
2011/09/18 Javascript
jQuery源码分析-03构造jQuery对象-源码结构和核心函数
2011/11/14 Javascript
jQuery登陆判断简单实现代码
2013/04/21 Javascript
JavaScript的setAttribute兼容性问题解决方法
2013/11/11 Javascript
页面js遇到乱码问题的解决方法是和无法转码的情况
2014/04/30 Javascript
在JavaScript中操作时间之getUTCDate()方法的使用
2015/06/10 Javascript
整理Javascript函数学习笔记
2015/12/01 Javascript
全面解析JavaScript里的循环方法之forEach,for-in,for-of
2020/04/20 Javascript
学习使用Bootstrap栅格系统
2017/05/11 Javascript
Vuejs 页面的区域化与组件封装的实现
2017/09/11 Javascript
Vue项目部署在Spring Boot出现页面空白问题的解决方案
2018/11/26 Javascript
微信小程序学习笔记之表单提交与PHP后台数据交互处理图文详解
2019/03/28 Javascript
RxJS在TypeScript中的简单使用详解
2020/04/13 Javascript
python中requests爬去网页内容出现乱码问题解决方法介绍
2017/10/25 Python
tensorflow创建变量以及根据名称查找变量
2018/03/10 Python
Pytorch入门之mnist分类实例
2018/04/14 Python
Python读取英文文件并记录每个单词出现次数后降序输出示例
2018/06/28 Python
python将txt等文件中的数据读为numpy数组的方法
2018/12/22 Python
Python寻找路径和查找文件路径的示例
2019/07/10 Python
python如何安装下载后的模块
2020/07/03 Python
Pycharm编辑器功能之代码折叠效果的实现代码
2020/10/15 Python
PyCharm2020.3.2安装超详细教程
2021/02/08 Python
基于 HTML5 的 WebGL 3D 版俄罗斯方块的示例代码
2018/05/28 HTML / CSS
欧尚俄罗斯网上超市:Auchan俄罗斯
2018/05/03 全球购物
制定岗位职责的原则
2013/11/08 职场文书
优秀毕业生事迹材料
2014/02/12 职场文书
乡镇精神文明建设汇报材料
2014/08/15 职场文书
上诉答辩状范文
2015/05/22 职场文书
2016年五四青年节校园广播稿
2015/12/17 职场文书
MongoDB使用场景总结
2022/02/24 MongoDB
pytorch中的 .view()函数的用法介绍
2022/03/17 Python
Python Django / Flask如何使用Elasticsearch
2022/04/19 Python