You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python能否实现示例中的区域截图?附pyautogui代码示例

当然可以用Python实现你想要的区域截图功能!

嘿,你已经用pyautogui开了个好头,完全能实现这种“点击两次选定矩形区域”的截图需求。我来帮你把capture_area_scene()函数补全,直接就能用:

import pyautogui

def capture_current_scene(name_screenshot, i):
    im1 = pyautogui.screenshot()
    im1.save(f"{name_screenshot}_{str(i)}.png")  # 加上.png后缀,确保文件能正常打开

def capture_area_scene(save_name="area_screenshot"):
    # 用弹窗提示用户操作,比控制台输出更直观
    pyautogui.alert("请点击截图区域的左上角,点击确定后等待你的点击...")
    # 等待用户鼠标点击,获取起点坐标
    start_x, start_y = pyautogui.waitForClick()
    
    pyautogui.alert("请点击截图区域的右下角,点击确定后等待你的点击...")
    # 等待用户第二次点击,获取终点坐标
    end_x, end_y = pyautogui.waitForClick()
    
    # 计算截图区域的正确参数:left(左边界)、top(上边界)、width(宽度)、height(高度)
    # 处理用户可能先点右下角的情况,确保坐标顺序正确
    left = min(start_x, end_x)
    top = min(start_y, end_y)
    width = abs(end_x - start_x)
    height = abs(end_y - start_y)
    
    # 校验区域有效性,避免截图1x1以下的无效区域
    if width < 1 or height < 1:
        pyautogui.alert("选定的区域无效,请重新操作!")
        return
    
    # 执行区域截图
    area_screenshot = pyautogui.screenshot(region=(left, top, width, height))
    # 保存截图
    area_screenshot.save(f"{save_name}.png")
    pyautogui.alert(f"区域截图已成功保存为 {save_name}.png!")

# 测试用例
if __name__ == "__main__":
    # 调用全屏截图
    capture_current_scene("full_screen_shot", 1)
    # 调用区域截图
    capture_area_scene("my_selected_area")

关键细节说明:

  • 用pyautogui.waitForClick()自动等待用户的鼠标点击,不用额外按回车,交互更自然
  • 自动处理坐标顺序:不管你先点左上角还是右下角,都能正确计算出截图区域
  • 加入了区域有效性校验,避免出现无法保存的无效截图
  • 用弹窗提示替代控制台打印,对不熟悉命令行的用户更友好

小补充:

如果你偏好控制台输出提示,把代码里的pyautogui.alert()换成print()就行,比如:

print("请点击截图区域的左上角...")
start_x, start_y = pyautogui.waitForClick()

内容的提问来源于stack exchange,提问作者joemiler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 06:30:05