python截图教程

 时间:2024-10-17 13:58:37

1、首先,实用win32api 和 win32con,两行代码就能实现:import win32apiimport win32co荏鱿胫协nwin32api.keybd_event(win32con.VK_SNAPSHOT, 0),其中win32con这个库里面包含了很多定义好的和Windows相关的常量,而VK_SNAPSHOT就是Print Screen键的键位码。后面的数字0表示截取整个屏幕。如果改成数字1,表示截取当前窗口。

python截图教程

2、然后,win32api有一个模块 win32clipboard 是负责剪贴板相蔡龇呶挞关的操作,win32clipboard.GetClpboardData(formats),这个方法可以从剪贴板里面读取数据。但是需要指定数据的格式。从这里可以查看到更多的标准剪贴板格式(Standard Clipboard Formats)。

python截图教程

3、然后,使用的formats是CF_BITMAP,程序返回的是一串整数,怀疑应该是一个内存地址。A handle to a bitmap (HBITMAP)。尝试过CF_TIFF, 不过程序直接报错了,可见我使用Print Screen截图以后,剪贴板里面的图片格式并不是TIFF。

python截图教程

4、然后,CF_DIB返回的是一个内存对象,包含了BIT格式图片的信息。win32clipboard.GetClipboardData(win32con.CF_DIB)以后,可以得到一个很大的字符串。显然这个字符串就是图片的内容了。但是当我把这个字符串写入到bmp格式的文件后,却发现图片无法打开。

python截图教程

5、然后,写入文件的字符串缺少了.bmp 文件头,这个文件头是BITMAPFILEHEADER结构。为了创建这个文件头,使用GetClipboardData()。

python截图教程

6、最后,返回的字符串必须要进行解码(decoded),对于CF_DIB格式来说,返回的字符串的前面一部分就是BOTMAPINFOHEADER。

python截图教程
  • VS如何设置调式输出窗口
  • VB6.0如何利用command控件获取当前时间?
  • 使用C#编写简易的计算器
  • 【Eclipse】如何使用Eclipse Installer下载安装
  • Visual studio中添加/编译".C"文件
  • 热门搜索
    长沙 旅游 团购旅游 宁夏旅游资讯网 张家界凤凰旅游 文山旅游 河南省旅游局 绵阳旅游景点 黄山宏村旅游攻略 上海旅游高等专科学校教务处 桂林旅游攻略自由行