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实现多行注释的另类方法
Aug 22 Python
Python基于select实现的socket服务器
Apr 13 Python
python放大图片和画方格实现算法
Mar 30 Python
解决pycharm无法调用pip安装的包问题
May 18 Python
Python 离线工作环境搭建的方法步骤
Jul 29 Python
详解python中的index函数用法
Aug 06 Python
Pyqt5自适应布局实例
Dec 13 Python
基于python 等频分箱qcut问题的解决
Mar 03 Python
查看keras各种网络结构各层的名字方式
Jun 11 Python
Python类super()及私有属性原理解析
Jun 15 Python
详解运行Python的神器Jupyter Notebook
Jun 03 Python
如何使用PyCharm及常用配置详解
Jun 03 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
PHP3 safe_mode 失效漏洞
2006/10/09 PHP
php 判断网页是否是utf8编码的方法
2014/06/06 PHP
dedecms中使用php语句指南
2014/11/13 PHP
详解PHP变量传值赋值和引用赋值变量销毁
2019/03/23 PHP
如何运行/调试你的PHP代码
2020/10/23 PHP
javascript web页面刷新的方法收集
2009/07/02 Javascript
JavaScript 组件之旅(四):测试 JavaScript 组件
2009/10/28 Javascript
jquery validate poshytip 自定义样式
2012/11/26 Javascript
jQuery 淡入淡出 png图在ie8下有黑色边框的解决方法
2013/03/05 Javascript
ajax接收后台数据在html页面显示
2017/02/19 Javascript
原生js实现简单的Ripple按钮实例代码
2017/03/24 Javascript
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
2017/09/02 Javascript
Vue导出json数据到Excel电子表格的示例
2017/12/04 Javascript
解决cordova+vue 项目打包成APK应用遇到的问题
2019/05/10 Javascript
使用VueRouter的addRoutes方法实现动态添加用户的权限路由
2019/06/03 Javascript
JavaScript实现栈结构Stack过程详解
2020/03/07 Javascript
微信小程序实现电子签名功能
2020/07/29 Javascript
利用Vue实现简易播放器的完整代码
2020/12/30 Vue.js
浅谈numpy数组的几种排序方式
2017/12/15 Python
python3.6连接MySQL和表的创建与删除实例代码
2017/12/28 Python
python读取TXT每行,并存到LIST中的方法
2018/10/26 Python
Python函数装饰器实现方法详解
2018/12/22 Python
Python函数的参数常见分类与用法实例详解
2019/03/30 Python
python3 webp转gif格式的实现示例
2019/12/10 Python
Python tkinter和exe打包的方法
2020/02/05 Python
Pycharm 跳转回之前所在页面的操作
2021/02/05 Python
CSS3 RGBA色彩模式使用实例讲解
2016/04/26 HTML / CSS
校本教研工作制度
2014/01/22 职场文书
销售经理工作职责
2014/02/03 职场文书
企业安全生产目标责任书
2014/07/23 职场文书
六一儿童节活动总结
2014/08/27 职场文书
领导干部作风整顿剖析材料
2014/10/11 职场文书
违章停车检讨书
2014/10/21 职场文书
农村老人去世追悼词
2015/06/23 职场文书
pytorch交叉熵损失函数的weight参数的使用
2021/05/24 Python
win10壁纸在哪个文件夹 win10桌面背景图片文件位置分享
2022/08/05 数码科技