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实现扫描指定目录下的子目录及文件的方法
Jul 16 Python
解决Python中由于logging模块误用导致的内存泄露
Apr 23 Python
在阿里云服务器上配置CentOS+Nginx+Python+Flask环境
Jun 18 Python
详解Python3操作Mongodb简明易懂教程
May 25 Python
ubuntu环境下python虚拟环境的安装过程
Jan 07 Python
python中的随机函数小结
Jan 27 Python
python进行文件对比的方法
Dec 24 Python
django的ORM操作 增加和查询
Jul 26 Python
pytorch实现从本地加载 .pth 格式模型
Feb 14 Python
Python 使用 environs 库定义环境变量的方法
Feb 25 Python
解决Python中报错TypeError: must be str, not bytes问题
Apr 07 Python
Matplotlib animation模块实现动态图
Feb 25 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防注入代码
2010/04/07 PHP
javascript学习笔记(十六) 系统对话框(alert、confirm、prompt)
2012/06/20 Javascript
js判断页面中是否有指定控件的简单实例
2014/03/04 Javascript
详解addEventListener的三个参数之useCapture
2015/03/16 Javascript
jQuery+PHP星级评分实现方法
2015/10/02 Javascript
JavaScript的Backbone.js框架的一些使用建议整理
2016/02/14 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
Bootstrap基本模板的使用和理解1
2016/12/14 Javascript
jquery操作select取值赋值与设置选中实例
2017/02/28 Javascript
canvas仿iwatch时钟效果
2017/03/06 Javascript
r.js来合并压缩css文件的示例
2018/04/26 Javascript
vue组件name的作用小结
2018/05/23 Javascript
webpack4.0+vue2.0利用批处理生成前端单页或多页应用的方法
2019/06/28 Javascript
vue实现行列转换的一种方法
2019/08/06 Javascript
微信小程序实现录音功能
2019/11/22 Javascript
快速了解Vue父子组件传值以及父调子方法、子调父方法
2020/07/15 Javascript
[01:28:56]2014 DOTA2华西杯精英邀请赛 5 24 CIS VS DK
2014/05/26 DOTA
[00:32]2018DOTA2亚洲邀请赛Newbee出场
2018/04/03 DOTA
使用Python设置tmpfs来加速项目的教程
2015/04/17 Python
Python中Django框架利用url来控制登录的方法
2015/07/25 Python
Python3使用requests登录人人影视网站的方法
2016/05/11 Python
Python实现获取本地及远程图片大小的方法示例
2018/07/21 Python
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题
2018/09/27 Python
SheIn沙特阿拉伯:女装在线
2020/03/23 全球购物
Java中各种基本数据类型的默认值都是什么
2016/12/22 面试题
《草原》教学反思
2014/02/15 职场文书
共产党员公开承诺书
2014/03/25 职场文书
房屋买卖委托公证书
2014/04/08 职场文书
奠基仪式策划方案
2014/05/15 职场文书
教师自查自纠材料
2014/10/14 职场文书
党员作风建设整改方案
2014/10/27 职场文书
2015年度房地产工作总结
2015/04/09 职场文书
会计入职心得体会
2016/01/22 职场文书
如何书写授权委托书?
2019/06/25 职场文书
vue封装数字翻牌器
2022/04/20 Vue.js