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使用sorted函数对列表进行排序的方法
Apr 04 Python
Win7 64位下python3.6.5安装配置图文教程
Oct 27 Python
flask框架使用orm连接数据库的方法示例
Jul 16 Python
Python 实现异步调用函数的示例讲解
Oct 14 Python
Python Unittest根据不同测试环境跳过用例的方法
Dec 16 Python
使用Python3+PyQT5+Pyserial 实现简单的串口工具方法
Feb 13 Python
Python脚本按照当前日期创建多级目录
Mar 01 Python
Python中使用双下划线防止类属性被覆盖问题
Jun 27 Python
python中字典按键或键值排序的实现代码
Aug 27 Python
Pyinstaller 打包发布经验总结
Jun 02 Python
解析python 中/ 和 % 和 //(地板除)
Jun 28 Python
全网最细 Python 格式化输出用法讲解(推荐)
Jan 18 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
计算2000年01月01日起到指定日的天数
2006/10/09 PHP
MayFish PHP的MVC架构的开发框架
2009/08/13 PHP
解读PHP中上传文件的处理问题
2016/05/29 PHP
php利用递归实现删除文件目录的方法
2016/09/23 PHP
如何判断php mysqli扩展类是否开启
2016/12/24 PHP
使用Codeigniter重写insert的方法(推荐)
2017/03/23 PHP
PHP错误处理函数register_shutdown_function使用示例
2017/07/03 PHP
用javascript实现计算两个日期的间隔天数
2007/08/14 Javascript
jquery使用ColorBox弹出图片组浏览层实例演示
2013/03/14 Javascript
jquery表单验证框架提供的身份证验证方法(示例代码)
2013/12/27 Javascript
JavaScript中的small()方法使用详解
2015/06/08 Javascript
javascript解决IE6下hover问题的方法
2015/07/28 Javascript
微信通过页面(H5)直接打开本地app的解决方法
2017/09/09 Javascript
Nuxt.js实现校验访问浏览器类型的中间件
2018/08/24 Javascript
vue.js表单验证插件(vee-validate)的使用教程详解
2019/05/23 Javascript
vue-cli+iview项目打包上线之后图标不显示问题及解决方法
2019/10/16 Javascript
webpack的 rquire.context用法实现工程自动化的方法
2020/02/07 Javascript
vue中利用three.js实现全景图的完整示例
2020/12/07 Vue.js
Python模拟登陆实现代码
2017/06/14 Python
Python使用Matplotlib实现Logos设计代码
2017/12/25 Python
Python3.4实现远程控制电脑开关机
2018/02/22 Python
python2.6.6如何升级到python2.7.14
2018/04/08 Python
Python 读取指定文件夹下的所有图像方法
2018/04/27 Python
pycharm 安装JPype的教程
2019/08/08 Python
Python Tkinter模块 GUI 可视化实例
2019/11/20 Python
使用pyqt5 tablewidget 单元格设置正则表达式
2019/12/13 Python
Python基于codecs模块实现文件读写案例解析
2020/05/11 Python
非凡女性奢华谦虚风格:The Modist
2017/10/28 全球购物
说出你对remoting 和webservice的理解和应用
2014/06/08 面试题
外科实习自我鉴定
2013/10/06 职场文书
教育科研先进个人材料
2014/01/26 职场文书
《走一步再走一步》教学反思
2014/02/15 职场文书
采购助理岗位职责
2014/02/16 职场文书
2014年幼儿园后勤工作总结
2014/11/10 职场文书
Python接口自动化之文件上传/下载接口详解
2022/04/05 Python
JS精髓原型链继承及构造函数继承问题纠正
2022/06/16 Javascript