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

news2024/9/21 2:34:33

在 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.coloradmin.cn/o/2082314.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

最大噪音值甚至受法规限制,如何基于LBM算法有效控制风扇气动噪音

风扇的气动噪声 在工业设备行业,最大噪音值受法规限制。在很多使用风扇冷却的设备上,风扇噪声通常是这些设备工作噪声的最大贡献量。而在家电民用行业,例如空调、空气净化器、油烟机等,其噪音大小直接关系到用户的体验感受&#x…

从零开始掌握容器技术:Docker的奇妙世界

容器技术在当今的云计算和软件开发领域中扮演着越来越重要的角色。如果你是一名计算机专业的学生或从事IT行业的从业者,可能已经听说过Docker这个词。它在软件开发、部署、运维等环节中大放异彩,但对于刚接触这个概念的朋友来说,可能还是有些…

【乐企】有关乐企能力测试接口对接(详细)

1、申请密钥 2、验证本地服务器与乐企服务器的连通性 乐企服务器生产和测试域名均为:https://lqpt.chinatax.gov.cn:8443。开发者可以在“能力中心”查看基础公用能力详情,按照能力接入和开发指引完成接口对接,验证服务器连通性和证书配置正确…

给一个web网站,如何开展测试?

前言 Web测试是指针对Web应用程序(网站或基于Web的系统)进行的测试活动,以确保其质量、性能、安全性、可用性和兼容性等方面符合预期标准。Web测试涵盖了从前端用户界面(UI)到后端逻辑和数据库的各个方面,确保Web应用程序在不同环境和条件下都能正常运行…

参会投稿 | 第三届先进传感与智能制造国际学术会议(ASIM 2024)

第三届先进传感与智能制造国际会议(The 3rd International Conference on Advanced Sensing, Intelligent Manufacturing),由江汉大学、西安交通大学和山东大学主办,由江西省机械工程学会、东华理工大学机械与电子工程学院等联合协…

Hibernate 批量插入速度慢的原因和解决方法

由于业务需要一次性连续写入超过10k条以上的新数据,当对象超过10个成员变量以后,整个写入过程居然需要长达35秒,这个速度是不能接受的,故此研究了一下怎么开启Hibernate批量写入的功能。 我这边使用的是Hibernate 5.6.15 在网上…

推动光模块技术发展:从400G、800G到1.6T

随着数据通信领域的持续发展,对于更快、更高传输速率的需求也在不断增长。作为现代数据传输的基石,光模块技术不断进步以满足这一需求。其中一项重大进展是网络速率从400G提升到800G,并将向1.6T继续发展。让我们深入探讨这些技术的演变&#…

Java语言程序设计基础篇_编程练习题***17.9 (地址簿)

目录 题目:***17.9 (地址簿) 习题思路 代码示例 结果展示 题目:***17.9 (地址簿) 编写程序用于存储、返回、增加,以及更新如图 17-20 所示的地址薄。使用固定长度的字符串来存储地址中的每个属性。使用随机访问文件来读取和写人一个地址…

刚刚认证!网络主播成为国家新职业,易播易赚打造打造职业入门全新模式

近期,人力资源和社会保障部会同国家市场监督管理总局、国家统计局日前增设网络主播为国家新职业,这标志着网络主播的职业身份在“国家确定职业分类”上首次得以确立。 据人社部此前印发的《关于加强新职业培训工作的通知》表示,新职业从业者可…

代码随想录算法训练营第二十三天| 39. 组合总和 40.组合总和II 131.分割回文串

目录 一、LeetCode 39. 组合总和思路:C代码 二、LeetCode 40.组合总和II思路C代码 三、LeetCode 131.分割回文串思路C代码 总结 一、LeetCode 39. 组合总和 题目链接:LeetCode 39. 组合总和 文章讲解:代码随想录 视频讲解:带你学…

直播平台直播API集成之快手篇

前言: 本篇我们来介绍如何使用快手 的直播API创建直播。 准备工作: 1、你首先得有个快手账号; 2、创建快手应用,填写应用审核信息,等待应用创建审核通过,应用成功创建后在开发与上线前还要提前做好API权限申请,如果你只需要获取用户基本信息,以及得到直播API的访问权限…

Python | Leetcode Python题解之第377题组合总和IV

题目&#xff1a; 题解&#xff1a; class Solution:def combinationSum4(self, nums: List[int], target: int) -> int:dp [1] [0] * targetfor i in range(1, target 1):for num in nums:if num < i:dp[i] dp[i - num]return dp[target]

合宙LuatOS产品规格书——Air700EMQ

Air700EMQ是合宙通信的LTE Cat.1bis通信模块&#xff0c; 依托移芯EC716E平台&#xff0c;支持先进的LTE 3GPP Rel.13技术。 主要特点如下&#xff1a; 1. 技术平台与标准支持&#xff1a; Air700EMQ采用移芯EC716E平台&#xff0c;基于先进的LTE技术。支持LTE 3GPP Releas…

leetcode234. 回文链表(java实现)

题目描述&#xff1a; 本道题的思路可以使用集合先存储链表的值&#xff0c;然后进行判断即可。 总体思路比较简单。 代码实现&#xff1a; class Solution {public boolean isPalindrome(ListNode head) {List<Integer> res new ArrayList();ListNode cur head;whil…

3分钟快速本地搭建RSShub服务器并结合内网穿透实现无公网IP远程访问

文章目录 前言1. Docker 安装2. Docker 部署Rsshub3. 本地访问Rsshub4. Linux安装Cpolar5. 配置公网地址6. 远程访问Rsshub7. 固定Cpolar公网地址8. 固定地址访问 前言 今天和大家分享的是如何在本地快速简单部署Rsshub工具&#xff0c;并结合cpolar内网穿透工具使用公网地址远…

Remote Sensing(MDPI)期刊投稿历程(CV方向)

一、期刊简介 期刊官网&#xff1a;https://www.mdpi.com/journal/remotesensing 影响因子&#xff08;2024&#xff09;&#xff1a;4.2 分区&#xff1a;JCR:Q1。中科院二区 版面费&#xff1a;2700瑞士法郎&#xff08;约21000rmb&#xff09; 二、投稿时间线 2024.06.20…

科研绘图系列:R语言对角线矩阵图(corrplot plot)

介绍 对角线矩阵图(Diagonal Matrix Plot)是一种特殊类型的图表,用于可视化对角线矩阵中的元素。对角线矩阵是一种方阵,其中非对角线上的元素都是零,而对角线上的元素可以是任意值。这种矩阵在数学和计算机科学中非常有用,尤其是在线性代数、特征值问题和对角化等操作中…

C语言中的野指针

野指针是指指针指向的位置是随机的&#xff0c;不明确的&#xff0c;未知的&#xff0c;没有限制的。 野指针的成因 指针未初始化 如上图&#xff0c;指针没有初始化&#xff0c;则指针指向的地址是随机的&#xff0c;若该地址已经被其他程序占用&#xff0c;且对指针进行解引…

C++入门基础(内容太干,噎住了)

文章目录 1.缺省参数 2.函数重载 2.1重载条件&#xff1a; 1.参数类型不同 2.参数个数不同 3.参数类型顺序不同 2.2不做重载条件情况&#xff1a; 1.返回值相同时 2.当全缺省遇见无参数 3.引用 3.1引用特性&#xff1a; 3.2引用的使用 1.缺省参数 1.缺省参数是声明…

中庸就是五五开,各打五十大板吗

中庸指的是&#xff0c;人生行事应该把握一个度&#xff0c;既不过分&#xff0c;也无不及&#xff0c;以中为贵&#xff0c;以和为美。 中庸关键在于“中”&#xff0c;要求适中适度、恰如其分。 《论语•先进》中提到&#xff0c;有一次&#xff0c;子路问孔子&#xff0c;…