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获取标准北京时间的方法
Mar 24 Python
Java中重定向输出流实现用文件记录程序日志
Jun 12 Python
对TensorFlow中的variables_to_restore函数详解
Jul 30 Python
Python中的CSV文件使用"with"语句的方式详解
Oct 16 Python
Python设计模式之工厂方法模式实例详解
Jan 18 Python
Python pandas.DataFrame调整列顺序及修改index名的方法
Jun 21 Python
深入了解python中元类的相关知识
Aug 29 Python
Python for i in range ()用法详解
Sep 18 Python
解决Pycharm 导入其他文件夹源码的2种方法
Feb 12 Python
基于Python实现粒子滤波效果
Dec 01 Python
selenium+headless chrome爬虫的实现示例
Jan 08 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
Mar 02 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.MVC的模板标签系统(二)
2006/09/05 PHP
Zend framework处理一个http请求的流程分析
2010/02/08 PHP
php阻止页面后退的方法分享
2014/02/17 PHP
Laravel框架中扩展函数、扩展自定义类的方法
2014/09/04 PHP
php实现留言板功能
2017/03/05 PHP
Thinkphp5.0 框架Model模型简单用法分析
2019/10/11 PHP
用javascript做拖动布局的思路
2008/05/31 Javascript
使用JavaScript库还是自己写代码?
2010/01/28 Javascript
JavaScript获取指定元素位置的方法
2015/04/08 Javascript
js库Modernizr的介绍和使用
2015/05/07 Javascript
微信小程序中data-key属性之数据传输(经验总结)
2020/08/22 Javascript
详解datagrid使用方法(重要)
2020/11/06 Javascript
[04:36]DOTA2国际邀请赛 ti3精彩集锦
2013/08/19 DOTA
[06:04]DOTA2英雄梦之声Vol19卓尔游侠
2014/06/20 DOTA
[11:27]《一刀刀一天》之DOTA全时刻20:TI4总奖金突破920W TS赛事分析
2014/06/18 DOTA
[42:32]完美世界DOTA2联赛循环赛 Magma vs PXG BO2第二场 10.28
2020/10/28 DOTA
[45:18]完美世界DOTA2联赛循环赛 PXG vs IO 第二场 11.06
2020/11/09 DOTA
浅谈Python的Django框架中的缓存控制
2015/07/24 Python
Python使用Pickle库实现读写序列操作示例
2018/06/15 Python
纯用NumPy实现神经网络的示例代码
2018/10/24 Python
python多线程分块读取文件
2019/08/29 Python
python 数据库查询返回list或tuple实例
2020/05/15 Python
python代码实现将列表中重复元素之间的内容全部滤除
2020/05/22 Python
Python爬取豆瓣数据实现过程解析
2020/10/27 Python
详解Django中异步任务之django-celery
2020/11/05 Python
Pyecharts 中Geo函数常用参数的用法说明
2021/02/01 Python
html5自动播放mov格式视频的实例代码
2020/01/14 HTML / CSS
戴尔加拿大官网:Dell加拿大
2016/09/17 全球购物
美国帽子俱乐部商店:Hat Club
2019/07/05 全球购物
高中生毕业自我鉴定
2013/10/10 职场文书
高级护理专业毕业生推荐信
2013/12/25 职场文书
蛋糕店的商业计划书范文
2014/01/27 职场文书
预备党员入党自我评价范文
2014/03/10 职场文书
设计大赛策划方案
2014/06/13 职场文书
个人投资合作协议书
2014/10/12 职场文书
2021-4-3课程——SQL Server查询【2】
2021/04/05 SQL Server