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缩进区别分析
Feb 15 Python
老生常谈Python之装饰器、迭代器和生成器
Jul 26 Python
python中列表和元组的区别
Dec 18 Python
Python设计模式之门面模式简单示例
Jan 09 Python
Python面向对象程序设计构造函数和析构函数用法分析
Apr 12 Python
python基于K-means聚类算法的图像分割
Oct 30 Python
Python logging模块写入中文出现乱码
May 21 Python
OpenCV 之按位运算举例解析
Jun 19 Python
简述python&pytorch 随机种子的实现
Oct 07 Python
在终端启动Python时报错的解决方案
Nov 20 Python
一文搞懂Python Sklearn库使用
Aug 23 Python
python使用torch随机初始化参数
Mar 22 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缓存类代码(附详细说明)
2011/06/09 PHP
第六章 php目录与文件操作
2011/12/30 PHP
开启PHP Static 关键字之旅模式
2015/11/13 PHP
php中Swoole的热更新实现代码实例
2021/03/04 PHP
utf8的编码算法 转载
2006/12/27 Javascript
Uglifyjs(JS代码优化工具)入门 安装使用
2020/04/13 Javascript
window.location.href的用法(动态输出跳转)
2014/08/09 Javascript
javascript实现点击按钮让DIV层弹性移动的方法
2015/02/24 Javascript
JavaScript基本类型值-Undefined、Null、Boolean
2017/02/23 Javascript
基于Vue实现拖拽功能
2020/07/29 Javascript
Vue props 单向数据流的实现
2018/11/06 Javascript
vue中created和mounted的区别浅析
2019/08/13 Javascript
uniapp微信小程序实现一个页面多个倒计时
2020/11/01 Javascript
[02:51]2014DOTA2国际邀请赛 IG战队官方纪录片
2014/07/21 DOTA
Python3.4 tkinter,PIL图片转换
2018/06/21 Python
Django  ORM 练习题及答案
2019/07/19 Python
Python实现一个数组除以一个数的例子
2019/07/20 Python
对Django外键关系的描述
2019/07/26 Python
Python 利用高德地图api实现经纬度与地址的批量转换
2019/08/14 Python
numpy求平均值的维度设定的例子
2019/08/24 Python
tensorflow自定义激活函数实例
2020/02/04 Python
Python日志syslog使用原理详解
2020/02/18 Python
Selenium常见异常解析及解决方案示范
2020/04/10 Python
Python3自定义json逐层解析器代码
2020/05/11 Python
Python如何将模块打包并发布
2020/08/30 Python
L’urv官网:精品女性运动服品牌
2019/07/07 全球购物
Jones Bootmaker官网:优质靴子和鞋子在线
2020/11/30 全球购物
应届大学生求职的自我评价
2013/11/17 职场文书
优秀学生干部推荐材料
2014/02/03 职场文书
日化店促销方案
2014/03/26 职场文书
学校督导评估方案
2014/06/10 职场文书
企业精神口号
2014/06/11 职场文书
2016最新离婚协议书范本及程序
2016/03/18 职场文书
奖学金申请书(范文)
2019/08/14 职场文书
红灯733-1型14管5波段半导体收音机
2021/04/22 无线电
CentOS7和8下安装Maven3.8.4
2022/04/07 Servers