python 三种方式实现截屏(详解+完整代码)

这篇具有很好参考价值的文章主要介绍了python 三种方式实现截屏(详解+完整代码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、方法一

# PIL中的ImageGrab模块
# 使用PIL中的ImageGrab模块简单,但是效率有点低
# PIL是Python Imaging Library,它为python解释器提供图像编辑函数能力。 ImageGrab模块可用于将屏幕或剪贴板的内容复制到PIL图像存储器中。
# PIL.ImageGrab.grab()方法拍摄屏幕快照。边框内的像素在Windows上以“RGB”图像的形式返回,在macOS上以“RGBA”的形式返回。
# 如果省略了边界框,则会复制整个屏幕。
import numpy as np
from PIL import ImageGrab, Image
import cv2

img = ImageGrab.grab(bbox=(0, 0, 1920, 1080))  # bbox 定义左、上、右和下像素的4元组
print(img.size[1], img.size[0])
img = np.array(img.getdata(), np.uint8).reshape(img.size[1], img.size[0], 3)
print(img)
cv2.imwrite('screenshot1.jpg', img)
# img = Image.fromarray(img)
# img.save('screenshot1.jpg')

二、方法二

# PyQt比调用windows API简单很多,而且有windows API的很多优势,比如速度快,可以指定获取的窗口,即使窗口被遮挡。
# 需注意的是,窗口最小化时无法获取截图。
# 首先需要获取窗口的句柄。
import win32gui
from PyQt5.QtWidgets import QApplication
import sys

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)
# print(hwnd_title.items())
for h, t in hwnd_title.items():
    if t != "":
        print(h, t)

# 程序会打印窗口的hwnd和title,有了title就可以进行截图了。
hwnd = win32gui.FindWindow(None, 'C:\Windows\system32\cmd.exe')
app = QApplication(sys.argv)
screen = QApplication.primaryScreen()
img = screen.grabWindow(hwnd).toImage()
img.save("screenshot2.jpg")

三、方法三

# pyautogui是比较简单的,但是不能指定获取程序的窗口,因此窗口也不能遮挡,不过可以指定截屏的位置
import pyautogui
import cv2  # https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv
import numpy as np
from PIL import Image

img = pyautogui.screenshot(region=[0, 0, 1920, 1080])  # x,y,w,h

# img = Image.fromarray(np.uint8(img))
# img.save('screenshot3.png')
img = cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)  # cvtColor用于在图像中不同的色彩空间进行转换,用于后续处理。
cv2.imwrite('screenshot3.jpg', img)

python 截图,Python,python

 文章来源地址https://www.toymoban.com/news/detail-668594.html

到了这里,关于python 三种方式实现截屏(详解+完整代码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python 人脸识别实现(三种方式)

    所有涉及的配置文件(xml,dat)存储在这里: https://jhc001.lanzoub.com/iyaeo0w8jkgb 密码:JDBC 所有 sdk 包下内容均为自定义,跑不了直接自己改输入就行 代码功能描述: 识别图像中的人面部位置,并将面部裁切下来,存储到excel里(excel里最多存储8张,按照从左到右顺序存储)

    2024年02月16日
    浏览(40)
  • Android 截屏实现的几种方式

    image.png image.png 1、View 截屏 View 截图是将当前 View 界面截取下来,而对于屏幕上其他信息比如:状态栏或其他应用的界面将无法截取。 1.1 截取除了导航栏之外的屏幕 1.2 截取某个控件或者区域 2、WebView 截屏 WebView 截屏有四种方式 2.1 使用 capturePicture() 方法(已废弃) private

    2024年02月06日
    浏览(43)
  • 【算法与数据结构】二叉树的三种遍历代码实现(下)—— 非递归方式实现(大量图解)

     上篇: 【算法与数据结构】二叉树的三种遍历代码实现(上)—— 用递归序知识点讲解_Hacynn的博客-CSDN博客 https://blog.csdn.net/zzzzzhxxx/article/details/133609612?spm=1001.2014.3001.5502 目录 前言 1、先序遍历 1.1、详细图解描述 1.2、先序遍历非递归代码实现  2、中序遍历 2.1、详细图解描

    2024年02月08日
    浏览(39)
  • C语言实现扫雷完整算法详解~(附完整代码~)

    扫雷是一个常见小游戏,那么如何用C语言实现扫雷呢?学习了二维数组之后,我们可将扫雷的网格区域存储为二维数组,从而使用C语言实现扫雷。 目录 1.算法基本思路 2.算法详解 1.初始化数组与打印数组 2.设置雷 3.排查与标记 4.CountMine函数计算周围雷的个数  5.ExpandMine函数

    2024年02月05日
    浏览(39)
  • 电脑如何使用QQ进行长截图(解决无效区域无法长截屏问题)

    在工作生活中,我们经常需要用电脑进行截图。很多不熟悉电脑使用的小伙伴不知道怎么进行截屏。对此我在这里提供以下几个使用电脑快捷键截屏的好办法(仅本人经常使用,亲测有效的办法): 1、win+shift+s快捷键: 可以看见第一个是矩形截屏,可以截下当前屏幕比较方

    2024年02月09日
    浏览(50)
  • 【Python三种打包方式】分别使用PyInstaller & setupTools & 拷贝环境实现项目打包

    pyinstaller 和 setuptools 打包有什么区别(来自 ChatGPT 的答案) pyinstaller 和 setuptools 都是 Python 中常用的打包工具,但它们的主要目的和工作方式略有不同。 pyinstaller 是一个可以将 Python 代码 打包成一个可执行文件的工具 ,它会将你的 Python 代码和所有依赖项打包成一个单独的可

    2024年02月03日
    浏览(51)
  • 数据结构之顺序表的实现(详解!附完整代码)

    线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构 常见的线性表:顺序表、链表、栈、队列、字符串… 线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存

    2024年02月04日
    浏览(40)
  • 【C语言课设计划】个人通讯录管理系统(C语言大作业 链表 结构体 运行截图 完整代码)

    hello 大家好呀 这里是布丁学姐~ 今天给大家带来的是《C语言课设计划》的第一篇,个人通讯录管理系统 通讯录是当前社会每个人不可缺少的信息系统,利用C语言和Dve c++制作个人通讯录管理系统,从根本上改变纸质通讯录难以长久保存、容易丢失的弊端,从而提高信息管理和

    2024年02月02日
    浏览(105)
  • JAVA服务端实现页面截屏(附代码)

    有正确完整的地址url; 通过浏览器能打开该url对应页面; 需要后台可以自动‘截屏’该页面; ‘截屏’后的页面可以输出文件(如pdf、png)格式; 简介 :JxBrowser 具有多进程架构。 它在独立的本地进程中运行 Chromium,这些进程通过进程间通信 (IPC) 通道以光速与 Java 进行通

    2024年02月04日
    浏览(43)
  • Python实现视频加速效果(完整代码)

    Python实现视频加速效果(完整代码) 在日常生活中,我们可能需要对某些视频进行编辑,如加速、慢放等效果。Python作为一种以数据分析和计算为主要应用的脚本语言,拥有处理视频的能力。本文将提供Python实现视频加速效果的完整代码,供大家进行参考。 首先我们需要安装所

    2024年02月14日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包