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处理PHP数组文本文件实例
Sep 18 Python
浅谈python字典多键值及重复键值的使用
Nov 04 Python
简单学习Python多进程Multiprocessing
Aug 29 Python
Python实现的径向基(RBF)神经网络示例
Feb 06 Python
Django项目实战之用户头像上传与访问的示例
Apr 21 Python
python 对给定可迭代集合统计出现频率,并排序的方法
Oct 18 Python
python实现给微信指定好友定时发送消息
Apr 29 Python
简单了解django orm中介模型
Jul 30 Python
Python matplotlib绘制饼状图功能示例
Sep 10 Python
Python+redis通过限流保护高并发系统
Apr 15 Python
python 实现仿微信聊天时间格式化显示的代码
Apr 17 Python
python读取hdfs上的parquet文件方式
Jun 06 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
获得Google PR值的PHP代码
2007/01/28 PHP
php操作xml
2013/10/27 PHP
PHP实现微信红包金额拆分试玩的算法示例
2018/04/07 PHP
JavaScript 检测浏览器和操作系统的脚本
2008/12/26 Javascript
JavaScript小技巧 2.5 则
2010/09/12 Javascript
js修改input的type属性及浏览器兼容问题探讨与解决
2013/01/23 Javascript
js 3种归并操作的实例代码
2013/10/30 Javascript
调用DOM对象的focus使文本框获得焦点
2014/02/19 Javascript
jQuery中:reset选择器用法实例
2015/01/04 Javascript
JS获取表格内指定单元格html内容的方法
2015/03/31 Javascript
javascript实现图片上传前台页面
2015/08/18 Javascript
Bootstrap多级导航栏(级联导航)的实现代码
2016/03/08 Javascript
jQuery删除当前节点元素
2016/12/07 Javascript
boostrapTable的refresh和refreshOptions区别浅析
2017/01/22 Javascript
基于JavaScript实现五子棋游戏
2020/08/26 Javascript
js登录滑动验证的实现(不滑动无法登陆)
2018/01/03 Javascript
学习LayUI时自研的表单参数校验框架案例分析
2019/07/29 Javascript
使用 Element UI Table 的 slot-scope方法
2019/10/10 Javascript
javaScript中indexOf用法技巧
2019/11/26 Javascript
解决vue初始化项目一直停在downloading template的问题
2020/11/09 Javascript
vue 获取到数据但却渲染不到页面上的解决方法
2020/11/19 Vue.js
Python 随机生成中文验证码的实例代码
2013/03/20 Python
python利用socketserver实现并发套接字功能
2018/01/26 Python
numpy linalg模块的具体使用方法
2019/05/26 Python
djano一对一、多对多、分页实例代码
2019/08/16 Python
Python openpyxl 插入折线图实例
2020/04/17 Python
python3.x中安装web.py步骤方法
2020/06/23 Python
python实现mask矩阵示例(根据列表所给元素)
2020/07/30 Python
详解Python中import机制
2020/09/11 Python
美国宠物用品网站:Value Pet Supplies
2018/03/17 全球购物
元旦促销方案
2014/03/15 职场文书
公司请假条格式
2014/04/11 职场文书
党的群众路线教育实践活动心得体会(教师)
2014/10/31 职场文书
2014年高二班主任工作总结
2014/12/16 职场文书
pytorch 带batch的tensor类型图像显示操作
2021/05/20 Python
Python matplotlib绘制条形统计图 处理多个实验多组观测值
2022/04/21 Python