Python编写屏幕截图程序方法
作者:junjie 时间:2022-10-04 11:11:47
正在编写的程序用的很多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 感觉还不如设置快捷键,这样应该少占用内存。
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
phpMyAdmin安装配置方法
淘宝CSS框架研究(1):Reset CSS(八卦篇)
PJBlog3优化——单击自动输入验证码
CSS中写expression可能会在Chrome中有问题
![](https://img.aspxhome.com/file/UploadPic/20101/29/k2010125224713-48s.gif)
CSS编写过程中常见的10个错误
python 模拟登陆163邮箱
简单探讨一下python线程锁
![](https://img.aspxhome.com/file/2023/6/107586_0s.png)
Ajax发明人:Ajax并不适合所有网站
Python自动化测试selenium指定截图文件名方法
![](https://img.aspxhome.com/file/2023/6/112946_0s.png)
python写入并获取剪切板内容的实例
python读取Excel表格文件的方法
![](https://img.aspxhome.com/file/2023/2/75332_0s.jpg)
Python模块学习 filecmp 文件比较
一文详解Python中logging模块的用法
Python中JsonPath提取器和正则提取器
Python上下文管理器详细使用教程
python使用参数对嵌套字典进行取值的方法
python OpenCV学习笔记实现二维直方图
![](https://img.aspxhome.com/file/2023/3/87963_0s.jpg)