在 Python 中可以使用PIL(Python Imaging Library,现在常用的是Pillow库,它是PIL的一个派生分支)结合pyautogui库来实现电脑图片的全屏截取,以下是示例代码:


首先确保已经安装了Pillowpyautogui库,如果没有安装,可以通过如下命令安装: 

pip install pillow
pip install pyautogui


以下是实现全屏截图并保存的 Python 代码示例: 

import pyautogui
from PIL import Image

# 使用pyautogui进行全屏截图,获取截图对象
screenshot = pyautogui.screenshot()

# 将截图对象转换为PIL的Image对象(实际上pyautogui截图返回的本身就可以当成Image对象来处理,这里是明确下类型)
image = Image.frombytes('RGB', screenshot.size, screenshot.tobytes())

# 定义保存的文件名,这里以screenshot.png为例,可以根据需求修改文件名及格式
file_name = "screenshot.png"

# 保存图片
image.save(file_name)

print(f"全屏截图已保存为 {file_name}")


上述代码的步骤解释如下:


  1. 首先通过pyautogui.screenshot()函数进行全屏截图,这个函数会返回一个截图对象,其包含了当前屏幕的图像信息。
  2. 接着使用Image.frombytes()将该截图对象转换为PIL库中的Image对象,方便后续进行保存等操作,不过实际上pyautogui截图返回的结果可以直接按照Image对象的方式调用保存方法,这一步转换只是更明确其类型对应关系。
  3. 然后指定保存的文件名,比如这里定义为screenshot.png,你可以根据实际情况更改文件名以及想要保存的图片格式(常见的如jpgpng等)。
  4. 最后调用image.save()方法将截图保存到本地磁盘中,并且打印提示信息告知用户截图已保存的情况。


另外,还可以使用 Python 的mss库来实现全屏截图,同样先安装mss库: 

复制

pip install mss


以下是使用mss库实现全屏截图的示例代码: 

复制

import mss
import mss.tools

# 创建mss对象
with mss.mss() as sct:
    # 获取整个屏幕的截图范围,等同于全屏截图范围
    monitor = sct.monitors[0]
    # 进行截图,获取截图数据
    sct_img = sct.grab(monitor)
    # 定义保存的文件名
    file_name = "screenshot_mss.png"
    # 使用mss.tools的函数将截图数据保存为指定格式的图片文件
    mss.tools.to_png(sct_img.rgb, sct_img.size, output=file_name)
    print(f"使用mss库的全屏截图已保存为 {file_name}")


代码解释:


  1. 先通过mss.mss()创建一个截图相关的对象,利用with语句来管理其上下文,确保资源的正确释放。
  2. 然后获取屏幕的监测区域信息,这里取monitors[0]就是代表整个屏幕的范围,也就是实现全屏截图对应的区域范围设定。
  3. 接着使用grab()方法进行实际的截图操作,获取到截图的数据信息。
  4. 之后定义想要保存的文件名,例如这里定义为screenshot_mss.png
  5. 最后调用mss.tools.to_png()函数,将截图数据按照png格式保存为指定的图片文件,同时打印相应的提示信息说明截图已保存成功。