使用 Python 编程截取屏幕截图



在某些情况下,例如自动化测试或制作故障纪录片和教学内容,程序化截屏方法可能很有用。作为一门动态语言,Python 拥有多个用户友好的库,例如 pytest;在这些库中,pyscreenshot 被认为是最简单、最快速的库之一。使用此工具,可以捕获整个屏幕或屏幕的一部分。

安装

在开始编写代码之前,需要安装 pyscreenshot 库。这可以通过 pip 轻松完成。

语法

pip install pyscreenshot

此外,请确保在系统中安装了 Python 库 pillow,它将帮助您获得图像处理功能。

语法

pip install pillow

基本截图

截取屏幕截图最简单的方法是捕获整个屏幕。ImageGrab.grab() 捕获整个屏幕并将其作为图像对象返回。screenshot.show() 在默认的图像查看器中打开捕获的屏幕截图。

示例

import pyscreenshot as ImageGrab

# Capture full screen
screenshot = ImageGrab.grab()

# Save the screenshot to a file 
screenshot.save('screenshot.png') # You can change the file name and extension as needed
# Display the screenshot
screenshot.show()

输出

屏幕截图将在默认的图像查看器中显示。

Screenshot

捕获特定区域

有时,您只需要屏幕的一部分,而不是整个部分。在这种情况下,您可以指定捕获特定区域。bbox 是一个元组,定义了要捕获的区域,而 ImageGrab.grab(bbox=bbox) 则捕获指定的区域。

示例

import pyscreenshot as ImageGrab

# Define the bounding box (left_x, top_y, right_x, bottom_y)
bbox = (10, 10, 500, 500)

# Capture a specific region
screenshot = ImageGrab.grab(bbox=bbox)

# Display the screenshot
screenshot.show()

输出

定义的区域将在默认的图像查看器中显示。

Screenshot

保存屏幕截图

要将捕获的屏幕截图保存到文件,请使用 save 方法。screenshot.save('screenshot.png') 将屏幕截图保存到名为 screenshot.png 的文件中。

示例

import pyscreenshot as ImageGrab

# Capture full screen
screenshot = ImageGrab.grab()

# Save the screenshot to a file
screenshot.save('screenshot.png')

输出

屏幕截图将保存为当前工作目录中的 screenshot.png。

在截取屏幕截图之前添加延迟

在捕获屏幕截图之前引入延迟在各种场景中都很有用。time.sleep(5) 在截取屏幕截图之前暂停执行 5 秒。

示例

import pyscreenshot as ImageGrab
import time

# Delay for 5 seconds
time.sleep(5)

# Capture full screen
screenshot = ImageGrab.grab()

# Display the screenshot
screenshot.show()

输出

屏幕截图将在延迟 5 秒后捕获,并在默认的图像查看器中显示。

连续截取多个屏幕截图

您可能需要快速连续捕获多个屏幕截图。循环捕获五个屏幕截图,每个屏幕截图都使用唯一的文件名保存。time.sleep(2) 在每次捕获之间引入 2 秒的延迟。

示例

import pyscreenshot as ImageGrab
import time

for i in range(5):
   # Capture full screen
   screenshot = ImageGrab.grab()

   # Save the screenshot to a file
   screenshot.save(f'screenshot_{i}.png')

   # Delay for 2 seconds
   time.sleep(2)

输出

五个屏幕截图将保存为 screenshot_0.png、screenshot_1.png、screenshot_2.png、screenshot_3.png 和 screenshot_4.png。

请注意,这将创建多个图像屏幕截图。

Screenshot

在屏幕截图中添加白色文本

有时,您可能希望在屏幕截图中添加文本以进行注释或标记。以下是使用 Python 中的 Pillow 库将白色文本添加到屏幕截图的示例。此示例捕获屏幕截图,向其添加白色文本,然后保存并显示修改后的图像。

安装

在开始编写代码之前,您必须安装 pillow 库。这可以使用 pip 轻松完成。

pip install pillow

示例

from PIL import Image, ImageDraw, ImageFont
import pyscreenshot as ImageGrab

# Define the text to add
x = "Hello, World!"

try:
   # Capture the screenshot
   screenshot = ImageGrab.grab()

   # Create an ImageDraw object
   draw = ImageDraw.Draw(screenshot)

   # Load a font
   try:
      # Use a truetype font (you can download a .ttf file and specify the path here)
      font = ImageFont.truetype("arial.ttf", size=50)
   except IOError:
      # Fallback to default font if the specified font is not available
      font = ImageFont.load_default()

   # Define the position and color for the text
   text_position = (50, 50)  # Adjusted position
   text_color = "white"  # Change text color to white

   # Add text to the screenshot
   draw.text(text_position, x, font=font, fill=text_color)

   # Save the screenshot with text
   screenshot.save('screenshot_with_text.png')

   # Display the screenshot
   screenshot.show()

   print("Screenshot captured and saved successfully.")

except Exception as e:
   print(f"An error occurred: {e}")

输出

Screenshot

结论

在本指南中,我们向您展示了使用 Python 中的 **pyscreenshot** 捕获屏幕截图的各种技术。从基本的全屏捕获到目标特定区域、保存文件、添加延迟以及连续拍摄多张屏幕截图,**pyscreenshot** 被证明是自动化和教学内容创建的通用工具。

python_projects_from_basic_to_advanced.htm
广告