【使用 Python 进行截图的两种方法】

在 Python 中,可以使用 pyautogui 和 Pillow 进行截图

使用 pyautogui 进行截图时,其提供了方便的函数。例如,使用 pyautogui.screenshot() 函数可以获取整个屏幕的截图,该函数返回一个包含屏幕截图的图像对象。如果不想截取整个屏幕,还可以使用 region 参数指定要截取的区域,如 pyautogui.screenshot(region=(0, 0, 300, 400)) ,即指定左上角坐标为 (0, 0) ,宽度为 300 ,高度为 400 的区域进行截图。

而 Pillow 库在截图方面也有出色表现。通过 from PIL import ImageGrab 导入 ImageGrab 模块,使用 ImageGrab.grab() 函数可以获取整个屏幕的截图,若要截取指定区域,可通过 bbox 参数实现,如 ImageGrab.grab(bbox=(100, 100, 400, 400))

在实际应用中,可以根据具体需求选择使用 pyautogui 或 Pillow 来实现截图功能。比如,如果需要在特定区域进行频繁截图,并且对截图的速度和精度有较高要求,可能更倾向于使用 pyautogui 的 region 参数进行精确控制。而如果只是简单地获取整个屏幕的截图,或者需要对截图进行更多的图像处理操作,Pillow 库的功能可能更为强大和灵活。总之,这两个库为 Python 中的截图操作提供了丰富的选择和便利的方法。

pyautogui截图的速度和精度

pyautogui 是一个用于控制鼠标和键盘的 Python 库,同时也具备截图功能。其截图速度主要受到屏幕分辨率、CPU 性能等因素的影响。一般来说,截取全屏幕的截图速度会比截取指定区域的截图速度更快。
在 1920 x 1080 的屏幕上,截取全屏幕的截图大约需要 100 毫秒,这速度不算快但也不至于太慢。
至于精度方面,pyautogui 能够满足大多数日常的截图需求,例如在进行自动化测试、屏幕录制或者制作教程时,可以较为准确地截取所需的屏幕画面。

使用pyautogui截图示例

# Python 程序进行截图import numpy as np
import cv2
import pyautogui#使用pyautogui进行截图
image = pyautogui.screenshot()
#这将以 PIL 格式返回图像并存储在 “image” 中。#如果你需要将图像保存为文件,可以像这样传入文件路径作为参数。
image1 = pyautogui.screenshot("image1.png")

效果如下:

请添加图片描述

Pillow 库截图的图像处理操作

Pillow 是 Python 中一个强大的图像处理库,其截图功能不仅可以获取屏幕截图,还能对截图进行丰富的图像处理操作。例如,您可以使用 Pillow 库对截图进行图像格式转换,如将 JPEG 格式转换为 PNG 格式。还能进行图像的裁剪,通过指定裁剪区域的坐标,精确地获取您想要的部分图像。此外,Pillow 库还支持图像的缩放、旋转、颜色转换、滤镜处理等操作。比如,您可以将截图进行缩小或放大,以适应不同的需求;也可以对截图进行旋转操作,比如逆时针旋转 90 度。在颜色转换方面,您可以将彩色图像转换灰度图像或者黑白图像,还能调整图像的亮度和对比度,让截图呈现出更好的效果。

使用pillow截图示例(窗口)

from PIL import ImageGrab
# 从 PIL(Python Imaging Library)库中导入 ImageGrab 模块,这个模块用于抓取图像。ss_region = (300, 300, 600, 600)
# 定义一个元组 ss_region,这个元组表示要抓取的屏幕区域的坐标。
# (300, 300) 是左上角的坐标,(600, 600) 是右下角的坐标
# 这两个坐标标识了一个横坐标从 300 到 600、纵坐标从 300 到 600 的矩形区域。ss_img = ImageGrab.grab(ss_region)
# 调用 ImageGrab 模块的 grab 方法,传入 ss_region 作为参数,
# 抓取指定区域的屏幕图像,并将其赋值给变量 ss_img。ss_img.save("SS3.jpg")
# 将抓取到的图像 ss_img 保存为名为“SS3.jpg”的文件,保存格式为 JPEG。

效果如下:

请添加图片描述

使用pillow截图示例(全屏)

from PIL import ImageGrab# 直接调用不带参数的 grab 方法即可截取全屏
ss_img = ImageGrab.grab()
ss_img.save("full_screen.jpg")

效果如下:

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/410788.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

齐护【百度AI对话】编程系统文心一言大语音模型对话ESP32图形化Mixly编程Scratch编程Arduino

齐护【百度AI对话】编程系统 一、前言 ​ 在这个日新月异的时代,AI的触角已延伸至互联网、金融、医疗、教育等每一个角落,其影响力不容忽视。从日常中的智能推荐到医疗前沿的精准诊断,从定制化教育到智能化的投资策略,AI正以前所…

Xilinx高速接口之GTP

简介 开坑计划中,主要参考ug482 主要讲解结构以及原语 以及时钟路由和一些其他的 GTP_COMMON还好,需要设置的不多,原语也短, GTP_CHANNEL需要设置的东西真多,原语也长 还好有官方参考例程以及自动生成的原语例化 不然…

PDF文件的读取与合并:使用PyPDF2与ReportLab

目录 一、PyPDF2库基础 1.1 PyPDF2简介 1.2 安装PyPDF2 1.3 读取PDF内容 1.4 合并PDF文件 二、ReportLab库基础 2.1 ReportLab简介 2.2 安装ReportLab 2.3 使用ReportLab生成PDF文本 2.4 ReportLab 与 PyPDF2 结合使用 三、注意事项与最佳实践 3.1 文本提取的局限性…

【Linux】初步识操作系统

linux专栏:《Linux入门系列》 系列文章:gdb-调试器初入门(简单版使用) 编辑器vim入门(概念模式转换技巧) 目录 1. 概念 2. 设计操作系统的目的 3. 定位:操作系统负责管理 4. 如何理解管理 …

科研绘图系列:R语言单细胞差异基因四分图(Quad plot)

介绍 在单细胞分析领域,为了探究不同分组间同一细胞类型的基因表达差异,研究者们常采用四分图(Quad Plot)作为分析工具。该图形的横轴代表比较组1,而纵轴代表比较组2。通过这种布局,四分图能够有效地展示两组间共有的差异表达基因,从而为深入理解细胞类型在不同条件下的…

Android 突破边界:解密google Partner机制获取Resource

在 Android 应用开发中,除了可以查找系统中的特定 APK 并获取其信息外,还可以通过 Partner 机制获取 Partner APK 的资源文件,同时这种机制也是一种跨进程的通信方式。本文将进一步探讨这些内容。 1.Partner apk注册特定的action广播 /** M…

优雅实现远程调用-OpenFeign

目录 OpenFeign介绍 OpenFeign最佳实践 我再来遇到个问题,我创建的com.xx.xxx包,放到一起了,不是那种一个在一个下面的那种 Nacos,只要看见这种什么网络报错啥的,java.net.SocketException: Network is unreachabl…

Vatee万腾平台:打造企业智能化转型的坚实后盾

在当今这个日新月异的数字化时代,企业智能化转型已成为不可逆转的趋势。面对激烈的市场竞争和快速变化的市场需求,如何高效、稳定地完成这一转型,成为众多企业亟需解决的问题。而Vatee万腾平台,正是这样一位引领企业智能化转型的坚…

MATLAB进阶:应用微积分

今天我们继续学习matlab中的应用微积分 求导(微分) 1、数值微分 n维向量x(xi,x,… x)的差分定义为n-1维向量△x(X2-X1,X3-X2,…,Xn- Xn-1)。 diff(x) 如果x是向量,返回向量x的差分如果x是矩…

《机器学习》—— OpenCV 对图片的各种操作(均值、方框、高斯、中值滤波处理)

文章目录 1、对有椒盐噪声的图片进行均值、方框、高斯、中值滤波处理2、给图像边缘增加边框3、对图片进行阈值化操作 1、对有椒盐噪声的图片进行均值、方框、高斯、中值滤波处理 均值滤波 cv2.blur是 OpenCV 库中的一个函数,用于对图像进行均值模糊处理。这个函数通…

webserver.h详解

webserver.h头文件 成员变量&#xff1a; 目的是提供一个完整的Web服务器框架&#xff0c;包括网络监听、事件处理、数据库连接管理、线程池管理等功能。 #ifndef WEBSERVER_H #define WEBSERVER_H#include <sys/socket.h> #include <netinet/in.h> #include <…

算法学习-基础数据结构

基础数据结构 一.栈 1.普通栈 套路&#xff1a;从前往后遍历 需要考虑相邻元素 有消除操作 栈。 2.单调栈 二.队列 1.普通队列 2.优先队列 三.Trie 使用场景&#xff1a;可以求某个字符串在众多字符串中出现的次数&#xff0c;以某个字符串为前缀出现的次数 Trie中…

一. 初始 Spring Boot

一. 初始 Spring Boot 文章目录 一. 初始 Spring Boot1. Spring Boot 是什么&#xff1f;2. Spring Boot 官方文档地址3. 第一个 Spring Boot 程序3.1 我的环境工具配置 4. 第一个 SpringBoot 程序解释说明5. Spring&#xff0c;SpringMVC&#xff0c; SpringBoot 三者的关系6.…

Linux中的常见命令——用户管理命令

1、useradd添加新用户 基本语法 语法功能描述useradd 用户名添加新用户useradd -g 组名 用户名添加新用户到某个组 实操案例 1、添加一个新用户【此时的用户是没有密码的】 [rootcentos100 ~]# cd /home [rootcentos100 home]# ls www zss [rootcentos100 home]# useradd…

设置虚拟机使用主机以太网而不是WiF连接

虚拟机使用主机的以太网连接而不是Wi-Fi连接&#xff0c;可以通过在虚拟化软件中配置虚拟机的网络设置来实现。以下是一些常见的虚拟化软件&#xff08;如VMware和VirtualBox&#xff09;中设置虚拟机网络以使用以太网连接的步骤&#xff1a; 一、VMware中设置 1、打开虚拟网…

查询系统操作指南

在年会等大型活动中&#xff0c;快速准确地查询桌号和座位号对于参与者来说至关重要。本文将详细介绍如何使用查询系统来实现这一目的。步骤一&#xff1a;电脑端信息上传 1. 访问官网&#xff1a;打开云分组的官方网站。 2. 登录账户&#xff1a;使用微信扫码的方式进行登录。…

《JavaEE进阶》----3.<SpringBoot项目创建细节大全+打jar包运行>

本篇博客讲解了 创建Spring Boot项目的各种方法及创建细节、还有项目中目录和代码的简单介绍、启动项目、换端口号、Web服务器简介、HTTP状态码、以及用Maven打jar包运行。 什么是Spring Spring让开发Java工程项目变得更快、更简单、更安全。 它专注于开发工程时的速度、简化…

Kafka命令详解:从零开始,掌握Kafka集群管理、主题操作与监控的全方位技能,理解每一条命令背后的逻辑与最佳实践

本文主要是关于Kafka的命令详解&#xff0c;每个命令都进行了非常详细的注释&#xff0c;帮助大家能更好的理解这些命令背后的含义&#xff0c;从底层去理解&#xff0c;如果大家喜欢&#xff0c;请多多点赞关注&#xff0c;欢迎评论&#xff01; 为大家推荐几篇比较好的Kafka文…

【第0002页 · 枚举】月月查华华的手机

【前言】本文以及之后的一些题解都会陆续整理到目录中&#xff0c;若想了解全部题解整理&#xff0c;请看这里&#xff1a; 第0002页 月月查华华的手机 不知道在看的各位有没有被家里人查过手机呢&#xff1f;如果有&#xff0c;想必今天你会感同身受一些。我们现在要来看一道…

什么是BI?BI系统的功能有哪些?哪些人需要BI工具支持?

什么是BI&#xff1f; BI是商业智能&#xff08;Business Intelligence&#xff09;的缩写。它是指通过收集、整理、分析和可视化企业内部和外部数据&#xff0c;从中获得洞察信息和决策支持的技术和流程。BI利用数据分析工具和技术&#xff0c;帮助企业管理者和决策者更好地理…