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改变日志(logging)存放位置的示例
Mar 27 Python
详解Python字符串对象的实现
Dec 24 Python
Python实现从log日志中提取ip的方法【正则提取】
Mar 31 Python
Python多重继承的方法解析执行顺序实例分析
May 26 Python
python飞机大战pygame游戏之敌机出场实现方法详解
Dec 17 Python
tensorflow实现测试时读取任意指定的check point的网络参数
Jan 21 Python
使用Django和Postgres进行全文搜索的实例代码
Feb 13 Python
Tensorflow tf.nn.atrous_conv2d如何实现空洞卷积的
Apr 20 Python
python opencv把一张图片嵌入(叠加)到另一张图片上的实现代码
Jun 11 Python
python入门:argparse浅析 nargs='+'作用
Jul 12 Python
python调用百度API实现人脸识别
Nov 17 Python
超级详细实用的pycharm常用快捷键
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
PHP中array_merge和array相加的区别分析
2013/06/17 PHP
详解WordPress中简码格式标签编写的基本方法
2015/12/22 PHP
Laravel框架基于中间件实现禁止未登录用户访问页面功能示例
2019/01/17 PHP
php中isset与empty函数的困惑与用法分析
2019/07/05 PHP
JavaScript语句可以不以;结尾的烦恼
2007/03/08 Javascript
nodejs win7下安装方法
2012/05/24 NodeJs
jQuery判断checkbox是否选中的小例子
2013/12/02 Javascript
为JS扩展Array.prototype.indexOf引发的问题及解决办法
2015/01/21 Javascript
JS实现alert中显示换行的方法
2015/12/17 Javascript
JS常用函数和常用技巧小结
2016/10/15 Javascript
干货!教大家如何选择Vue和React
2017/03/13 Javascript
使用Vue写一个datepicker的示例
2018/01/27 Javascript
vue弹窗消息组件的使用方法
2020/09/24 Javascript
vue父组件异步获取数据传给子组件的方法
2018/07/26 Javascript
vue项目中使用Hbuilder打包app 设置沉浸式状态栏的方法
2018/10/22 Javascript
浅谈Node 异步IO和事件循环
2019/05/05 Javascript
微信小程序:数据存储、传值、取值详解
2019/05/07 Javascript
详解Vue的组件中data选项为什么必须是函数
2020/08/17 Javascript
[41:08]TNC vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python实现的计数排序算法示例
2017/11/29 Python
Python编程把二叉树打印成多行代码
2018/01/04 Python
在PyCharm下打包*.py程序成.exe的方法
2018/11/29 Python
python实现kNN算法识别手写体数字的示例代码
2019/08/16 Python
numpy创建单位矩阵和对角矩阵的实例
2019/11/29 Python
使用pygame实现垃圾分类小游戏功能(已获校级二等奖)
2020/07/23 Python
深入分析python 排序
2020/08/24 Python
Django 用户认证Auth组件的使用
2020/11/30 Python
美国值得信赖的婚恋交友网站:eHarmony
2018/10/04 全球购物
英文求职信结束语大全
2013/10/26 职场文书
查环查孕证明
2014/01/10 职场文书
优秀经理事迹材料
2014/02/01 职场文书
2016消防宣传标语口号
2015/12/26 职场文书
大学生军训心得体会5篇
2019/08/15 职场文书
jquery插件实现图片悬浮
2021/04/16 jQuery
详解Redis基本命令与使用场景
2021/06/01 Redis
Python实现科学占卜 让视频自动打码
2022/04/09 Python