python截图直接在内存里调用_python 使用win32api截图全解释
1、获得应用窗口句柄
hwnd=win32gui.FindWindow(0,“窗口名字”)
2、通过应用窗口句柄获得窗口DC
hwndDC=win32gui.GetWindowDC(hwnd)
3、通过hwndDC获得mfcDC(注意主窗口用的是win32gui库,操作位图截图是用win32ui库)
mfcDC=win32ui.GreateDCFromHandle(hwnd)
4、创建兼容DC,实际在内存开辟空间( 将位图BitBlt至屏幕缓冲区(内存),而不是将屏幕缓冲区替换成自己的位图。同时解决绘图闪烁等问题)
neicunDC=mfcDC.CreateCompatibleDC()
5、创建位图
savebitmap=win32ui.CreateBitmap()
6、设置位图的大小以及内容(图片为应用窗口的整个截图)
width=40
height=40(长宽为自己想要图片的大小,单位是像素)
savebitmap.CreateCompatibleBitmap(mfcDC,width,height)
7、将位图放置在兼容DC,即将位图数据放置在刚开辟的内存里
neicunDC.SleteObject(savebitmap)
8、截取位图部分,并将截图保存在剪贴板(剪贴板是Windows系统一段可连续的。可随存放信息的大小而变化的内存空间,用来临时存放交换信息。只能保留一份数据,每当新的数据传入,旧的便会被覆盖。平时使用的qq截图、微信截图就是将截好的图放置在剪贴板,然后在QQ/微信窗口粘贴才将截图从剪贴板中取出来)’’’
neicunDC.BitBle((w1,w2),width,height,mfcDC,(x,y),win32con.SRCCOPY)
‘’‘BitBle函数需要输入6个参数,第一参数(w1,w2),指在位图里显示的左上角顶点,一般为(0,0),若不为(0,0),应用位图无法覆盖的地方为黑色背景。第二第三参数width,height最终截图的长宽(一般与上面设置的位图大小一致)。第四参数指窗口的mfcDC。第五参数(x,y)指应用截图起点的逻辑坐标(设备坐标指相对于屏幕左上角为起点的坐标,逻辑坐标指相对于应用窗口左上角的坐标)。第六参数win32con.SRCCOPY,指用复制的方法截取,其他参数可百度光栅操作代码。整个逻辑是内存作为黑色背景墙,第二层为位图,第三层为我们需要截图的位置。所以BitBle的第一个参数是位图放置在黑色背景墙的位置(内存),以黑色背景墙左上角为起点,(w1,w2)为位图左上角顶点的位置。放置好位图后,在位图上截图,截图的长为width,宽为height。截图的起始位置(相对于应用窗口左上角顶点的位置坐标)为(x,y)。’’’
9、将截图数据从剪贴板中取出,并保存为bmp图片(注意创建位图使用的是bitmap,故图片格式为bmp。上一步也只是截图并没有操作’另存为’。其中filename为存放图片的名称,可自己修改。保存的路径为当前脚本储存的路径。比如当前脚本在D:\TEST文件夹下,那bmp截图文件也在D:\TEST文件夹下)’’’
savebitmap.SaveBitmapFile(neicunDC,filename)
10、释放内存
win32gui.delete(savebitmap.GetHandle())
neicunDC.DeleteDC()
mfcDC.DeleteDC()
win32gui.Release(hwnd,hwndDC)
python截图直接在内存里调用_python 使用win32api截图全解释相关推荐
- python截图直接在内存里调用_Python-按块上传FTP中的内存文件(由API调用生...
我需要能够在Python中通过FTP和SFTP上传文件,但有一些不常见的约束. >绝对不能将文件写入磁盘. >通过调用API并将JSON响应写入文件来生成文件. >有多个对API的调 ...
- .net安装_无需安装Python,就可以在.NET里调用Python库
作者 | Meinrad Recheis 译文来源 | 草根专栏(ID:Cgzl-Tech) Pythonnet这个屌爆的项目的出现,使得我们可以用一种新的方式,让C#可以和Python之间进行 ...
- 【翻译】无需安装Python,就可以在.NET里调用Python库
原文地址:https://henon.wordpress.com/2019/06/05/using-python-libraries-in-net-without-a-python-installat ...
- net能和python结合吗_如何不用安装python就能在.NET里调用Python库
前言 Pythonnet这个屌爆的项目的出现,使得我们可以用一种新的方式,让C#可以和Python之间进行互操作.但是它的设置和部署可能有点问题,真的是这样吗? 本文我会介绍Python.Includ ...
- python实例方法不可以用类调用_python中可以直接用类调用方法吗
python中可以直接用类调用方法吗 关注:244 答案:4 mip版 解决时间 2021-01-16 12:20 提问者 妳莂騙莪 2021-01-15 21:49 python中可以直接用类调 ...
- 无需安装Python,就可以在.NET里调用Python库
作者 | Meinrad Recheis 译文来源 |草根专栏(ID:Cgzl-Tech) Pythonnet这个屌爆的项目的出现,使得我们可以用一种新的方式,让C#可以和Python之间进行互操 ...
- python中全局变量的定义及调用_python中定义全局变量
python中怎么定义全局变量 python中在哪些情况下必须使用global来声明全局变量 python class里面的全局变量问题 python中的本地变量(local variable)和全局 ...
- python读取视频占用内存太大_Python 读取大文件内存占用检测示例
导读热词对python这个高级语言感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧! python读写文件的api都很简单,一不留神就容易踩"坑".笔者记录 ...
- python 微信公众号网页接口调用_Python调用微信公众平台接口操作示例
本文实例讲述了Python调用微信公众平台接口操作.分享给大家供大家参考,具体如下: 这里使用的是Django,其他类似 # coding=utf-8 from django.http import ...
最新文章
- UNIX/Linux基本命令大全
- debian 开发版 移植_迅雷X Linux版(Debian系通用)
- 程序员赴美经验谈:本科应届 Kevin - 弗罗里达州 Oracle
- 9个妙招增强家庭WIFI信号
- 计算机一级电子表格怎么打开,xls文件怎么打开?其实很简单
- Java桌球小游戏1
- .NET 6 预览版 7:新功能已完成 ,将专注于改进
- 使用spring ResponseEntity处理http响应
- tensorflow离线安装指南
- IE浏览器“SEC7113: CSS 因 Mime 类型不匹配而被忽略”问题的解决方法
- 已解决:setuna2在win10中使用,桌面会自动放大
- cc2430的ram和rom的划分
- 省市县行政区划代码sql及源地址
- 自娱自乐 中秋快乐 代码
- 使用js,对数值保留小数点后两位的处理(两种情况)
- 使用PowerShell 获取AAD 用户的license授予时间
- TAZ生成实践(Intel芯片Mac Python 3.7.9)
- 2022-2028年全球与中国护眼台灯行业深度分析
- ​内嵌物理知识神经网络(PINN)是个坑吗?
- 程序员自我修炼:《匠艺整洁之道》读书总结
热门文章
- 2020中国跨境消费报告:“小镇辣妈”“熟龄单身姐姐”“百万年薪大佬”都买啥?...
- 低功耗Atom下载机兼Home Server咯
- conda安装一直在Solving environment
- Linux操作系统与基本使用,小白必看文章
- java项目: ElasticSearch+Spark构建高相关性搜索服务千人千面推荐系统
- enc易能变频_易能变频器调整数据
- php获取当前时间的秒数
- VMWare搭建三台大数据环境虚拟机
- SmartUpload在servlet中使用方法
- 机器学习笔记-Logistic分类