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 pickle 和 shelve模块的用法
Sep 16 Python
python条件和循环的使用方法
Nov 01 Python
python递归计算N!的方法
May 05 Python
Python获取linux主机ip的简单实现方法
Apr 18 Python
Django自定义分页效果
Jun 27 Python
基于python神经卷积网络的人脸识别
May 24 Python
python 使用pandas计算累积求和的方法
Feb 08 Python
Python可变和不可变、类的私有属性实例分析
May 31 Python
python 字段拆分详解
Dec 17 Python
利用pandas将非数值数据转换成数值的方式
Dec 18 Python
Pytorch 实现focal_loss 多类别和二分类示例
Jan 14 Python
Python3.8安装Pygame教程步骤详解
Aug 14 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编实现程动态图像的创建代码
2008/09/28 PHP
Windows下php+mysql5.7配置教程
2017/05/16 PHP
封装了一个js图片轮换效果的函数
2011/09/28 Javascript
有效提高JavaScript执行效率的几点知识
2015/01/31 Javascript
浅谈类似于(function(){}).call()的js语句
2015/03/30 Javascript
javascript中JSON对象与JSON字符串相互转换实例
2015/07/11 Javascript
js实现匹配时换色的输入提示特效代码
2015/08/17 Javascript
JavaScript 对象深入学习总结(经典)
2015/09/29 Javascript
jQuery基于排序功能实现上移、下移的方法
2016/11/26 Javascript
使用Bootstrap和Vue实现用户信息的编辑删除功能
2017/10/25 Javascript
vue-cli 目录结构详细讲解总结
2019/01/15 Javascript
Element Tooltip 文字提示的使用示例
2020/07/26 Javascript
[01:31:03]DOTA2完美盛典全回顾 见证十五项大奖花落谁家
2017/11/28 DOTA
[45:34]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.18
2020/12/19 DOTA
Python中turtle作图示例
2017/11/15 Python
python实现感知器
2017/12/19 Python
python利用requests库进行接口测试的方法详解
2018/07/06 Python
python 不同方式读取文件速度不同的实例
2018/11/09 Python
Pandas分组与排序的实现
2019/07/23 Python
深入解析神经网络从原理到实现
2019/07/26 Python
python关于调用函数外的变量实例
2019/12/26 Python
Python + selenium + crontab实现每日定时自动打卡功能
2020/03/31 Python
详解vscode实现远程linux服务器上Python开发
2020/11/10 Python
python反编译教程之2048小游戏实例
2021/03/03 Python
软件缺陷的分类都有哪些
2014/08/22 面试题
农业大学毕业生的个人自我评价
2013/10/11 职场文书
医学检验专业大学生求职信
2013/11/18 职场文书
最新茶叶店创业计划书
2014/01/14 职场文书
《鹬蚌相争》教学反思
2014/04/22 职场文书
2014年全国法制宣传日宣传活动方案
2014/11/02 职场文书
作弊检讨书
2015/01/27 职场文书
求职自荐信怎么写
2015/03/04 职场文书
2016年“节能宣传周”活动总结
2016/04/05 职场文书
奖学金申请书(范文)
2019/08/14 职场文书
python入门之算法学习
2021/04/22 Python
Python OpenCV 彩色与灰度图像的转换实现
2021/06/05 Python