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 解析XML python模块xml.dom解析xml实例代码
Feb 07 Python
python实现通过shelve修改对象实例
Sep 26 Python
Python爬取Coursera课程资源的详细过程
Nov 04 Python
基于scrapy实现的简单蜘蛛采集程序
Apr 17 Python
解决python写入带有中文的字符到文件错误的问题
Jan 31 Python
python实现弹跳小球
May 13 Python
django解决订单并发问题【推荐】
Jul 31 Python
Python Django 命名空间模式的实现
Aug 09 Python
Python中的相关分析correlation analysis的实现
Aug 29 Python
python GUI库图形界面开发之PyQt5计数器控件QSpinBox详细使用方法与实例
Feb 28 Python
Python实现发票自动校核微信机器人的方法
May 22 Python
PyTorch 导数应用的使用教程
Aug 31 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判断图片格式的七种方法小结
2013/06/03 PHP
php目录操作实例代码
2014/02/21 PHP
php自动给网址加上链接的方法
2015/06/02 PHP
PHP查找与搜索数组元素方法总结
2015/06/12 PHP
Zend Framework框架Smarty扩展实现方法
2016/03/22 PHP
thinkphp3.x自定义Action、Model及View的简单实现方法
2016/05/19 PHP
PHP中STDCLASS用法实例分析
2016/11/11 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
聊聊 PHP 8 新特性 Attributes
2020/08/19 PHP
Javascript 对象的解释
2008/11/24 Javascript
javascript 实现子父窗体互相传值的简单实例
2014/02/17 Javascript
分享几种比较简单实用的JavaScript tabel切换
2015/12/31 Javascript
Angular外部使用js调用Angular控制器中的函数方法或变量用法示例
2016/08/05 Javascript
干货!教大家如何选择Vue和React
2017/03/13 Javascript
vue实现图片裁剪后上传
2020/12/16 Vue.js
在python中实现将一张图片剪切成四份的方法
2018/12/05 Python
python 检查文件mime类型的方法
2018/12/08 Python
Python实现的登录验证系统完整案例【基于搭建的MVC框架】
2019/04/12 Python
django做form表单的数据验证过程详解
2019/07/26 Python
python 三元运算符使用解析
2019/09/16 Python
Python+OpenCV+图片旋转并用原底色填充新四角的例子
2019/12/12 Python
Pytorch之finetune使用详解
2020/01/18 Python
python GUI库图形界面开发之PyQt5线程类QThread详细使用方法
2020/02/26 Python
Python 数据的累加与统计的示例代码
2020/08/03 Python
Html5剪切板功能的实现代码
2018/06/29 HTML / CSS
岗位竞聘演讲稿
2014/01/10 职场文书
中学生打架检讨书
2014/02/10 职场文书
关于教师节的演讲稿
2014/09/04 职场文书
初三学生语文考试作弊检讨书
2014/12/14 职场文书
大连星海广场导游词
2015/02/10 职场文书
抢劫罪辩护词
2015/05/21 职场文书
2016年师德先进个人事迹材料
2016/02/29 职场文书
MySQL 全文索引使用指南
2021/05/25 MySQL
Mysql中where与on的区别及何时使用详析
2021/08/04 MySQL
TypeScript中条件类型精读与实践记录
2021/10/05 Javascript
Java基于Dijkstra算法实现校园导游程序
2022/03/17 Java/Android