PIL中的ImageGrab模块

import time
import numpy as np
from PIL import ImageGrabimg = ImageGrab.grab(bbox=(100, 161, 1141, 610))
img = np.array(img.getdata(), np.uint8).reshape(img.size[1], img.size[0], 3)

使用PIL中的ImageGrab模块简单,但是效率有点低,截屏一次需0.5s。

windows API

调用windows API,速度快但是使用较复杂,这里就不做详细介绍了,因为有更好用的PyQt。

PyQt

PyQt比调用windows API简单很多,而且有windows API的很多优势,比如速度快,可以指定获取的窗口,即使窗口被遮挡。需注意的是,窗口最小化时无法获取截图。

首先需要获取窗口的句柄。

import win32gui
hwnd_title = dict()
def get_all_hwnd(hwnd,mouse):if win32gui.IsWindow(hwnd) and win32gui.IsWindowEnabled(hwnd) and win32gui.IsWindowVisible(hwnd):hwnd_title.update({hwnd:win32gui.GetWindowText(hwnd)})win32gui.EnumWindows(get_all_hwnd, 0)for h,t in hwnd_title.items():if t is not "":print(h, t)

程序会打印窗口的hwnd和title,有了title就可以进行截图了。

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流群:711312441
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
from PyQt5.QtWidgets import QApplication
from PyQt5.QtGui import *
import win32gui
import syshwnd = win32gui.FindWindow(None, 'C:\Windows\system32\cmd.exe')
app = QApplication(sys.argv)
screen = QApplication.primaryScreen()
img = screen.grabWindow(hwnd).toImage()
img.save("screenshot.jpg")

pyautogui

pyautogui是比较简单的,但是不能指定获取程序的窗口,因此窗口也不能遮挡,不过可以指定截屏的位置,0.04s一张截图,比PyQt稍慢一点,但也很快了。

import pyautogui
import cv2img = pyautogui.screenshot(region=[0,0,100,100]) # x,y,w,h
# img.save('screenshot.png')
img = cv2.cvtColor(np.asarray(img),cv2.COLOR_RGB2BGR)

以上这篇对Python获取屏幕截图的4种方法详解就是小编分享给大家的全部内容了

几行python代码制作桌面截图程序相关推荐

  1. Python代码制作桌面截图程序

    PIL中的ImageGrab模块 import time import numpy as np from PIL import ImageGrabimg = ImageGrab.grab(bbox=( ...

  2. 80行Python代码制作微信抢红包程序,运气王属于有技术的人

    每逢过年过节,大家都会在微信群里联系祝福自己的亲朋好友,有时候还会在群里发红包,让大家去抢,其实并没有多少人在乎红包里那点钱,主要还是为了烘托气氛,图个彩头.但是气氛归气氛,要是每次总是抢到最小的红包 ...

  3. python做出来的小程序、可以在win10上面运行_超详细,手把手教你用20行Python代码制作飞花令小程序!...

    原标题:超详细,手把手教你用20行Python代码制作飞花令小程序! 来源:早起Python 作者:陈熹 飞花令是古时候人们经常玩一种"行酒令"的游戏,是中国古代酒令之一,属雅令. ...

  4. python做病毒传播的空间数据_利用4行Python代码监测每一行程序的运行时间和空间消耗...

    Python是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言,其具有高可扩展性和高可移植性,具有广泛的标准库,受到开发者的追捧,广泛应用于开发运维(DevOps).数据科学.网站开发和安 ...

  5. 如何用python破解热点_用30行Python代码制作wifi万能钥匙,邻居家wifi网速好快

    原标题:用30行Python代码制作wifi万能钥匙,邻居家wifi网速好快 当我们拖着疲惫的身体下班回到家,想开开心心的吹着空调风扇吃着西瓜,然后手机连上wifi打一把游戏好好舒服下,然而家里wif ...

  6. n行Python代码系列:三行程序实现从视频截取子窗内容输出

    ☞ ░ 老猿Python博文目录:https://blog.csdn.net/LaoYuanPython ░ 一.引言 最近看到好几篇类似"n行Python代码-"的博文,看起来还 ...

  7. 再见,360浏览器!我用60行Python代码制作一款浏览器!

    点上方"菜鸟学Python",选择"星标" 第476篇原创干货,第一时间送达 对于日常网上冲浪的朋友们,浏览器是大家必不可少的一个工具,市面上也存在各种款式的浏 ...

  8. n行Python代码系列:四行程序实现两个视频同屏播放

    ☞ ░ 老猿Python博文目录:https://blog.csdn.net/LaoYuanPython ░ 一.引言 最近看到好几篇类似"n行Python代码-"的博文,看起来还 ...

  9. n行Python代码系列:两行程序判断是否处于Debug模式

    ☞ ░ 前往老猿Python博客 https://blog.csdn.net/LaoYuanPython ░ 一.引言 最近看到好几篇类似"n行Python代码-"的博文,看起来还 ...

最新文章

  1. 超图桌面版下载、安装、使用入门
  2. 织入业务代码-IModifyService
  3. 使用WordPress的Kyma plugin同Kyma断开连接的实现
  4. vue-beauty UI库
  5. 牛客 13822 Keep In Line(枚举与暴力、Python)
  6. 基本配置4-被忽悠进了CentOS 6
  7. InTouch离线激活教程
  8. KuaiRec | 快手发布首个稠密度高达99%的推荐数据集, 可用于多种推荐系统方向研究...
  9. 浪潮之巅阅读笔记02
  10. [渝粤教育] 西安交通大学 光通信器件及系统 参考 资料
  11. 【kafka】生产者速度测试
  12. 高可用之2——存储b
  13. xsd文件生成class
  14. 【Tools系列】SecureCRT文件传输模式之Zmodem
  15. 昂达obook11安装Linux,隐藏超大彩蛋!昂达oBook11居然支持手写笔?
  16. jsp页面使用大于号等
  17. 历年研究生数学建模优秀论文汇总
  18. MTF SFR 简介
  19. 智能家居Zigbee和蓝牙哪个发展潜力更大?
  20. Hololens开发笔记_在Unity运行没问题,在Hololens跑出现PathNotFoundException:Could not find a part of path.

热门文章

  1. android获取通讯录号码,读取通讯录号码
  2. 阿里系统软件迎战“双11”超高流量峰值全纪录
  3. vscode使用pinia官网字体
  4. linux搭建nexus私服仓库并简单使用
  5. 【转】PIC单片机的命名规则
  6. 一部不错的电影: 反抗军
  7. WPS表格打印能缩放到一张纸上?
  8. 一级运算放大器之套筒式与折叠式共源共栅
  9. 案例剖析|编辑器,还真不是这么简单!
  10. vue 实现PDA设备扫描二维码及条码功能