当前位置: 首页 > news >正文

【使用 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.mrgr.cn/news/11575.html

相关文章:

  • 数据脱密Huntool.DesensitizedUtil
  • 【国产游戏的机遇与挑战】
  • 【Leetcode 2068 】 检查两个字符串是否几乎相等 —— 击败100%
  • OpenCV几何图像变换(6)计算反转仿射变换函数invertAffineTransform()的使用
  • Java14 反射
  • SLAM十四讲ch3课后习题
  • 尝试给OpenHarmony4.0增加可以在动态库中使用的日志模块
  • 商业律师事务所借助 DocuSign 解决方案加快了 QES 和身份识别流程 | 电子签约律师事务解决方案
  • Redis哨兵(sentinel)
  • NOsql数据库Redis
  • 深度学习入门-04
  • qt creator自动运行单元测试
  • 计算机网络 TCPUDP、IP、ARPRARP、NAT总结
  • 国产游戏技术能否引领全球?
  • Tailor:免费开源 AI 视频神器,创作者必备利器
  • ELK企业级日志分析系统(分布式文件系统与企业级应用)
  • springCloud 网关(gateway)配置跨域访问
  • Element-UI自学实践(二)
  • DS | 并查集 Disjoint Set Union
  • 三维尺寸公差分析软件哪个最好用?推荐上海棣拓自研软件DTAS