Python 快速屏幕区域截取与有序保存程序
📅 2026/7/25 20:51:01
👁️ 次浏览
零、背景说明上海图书馆的馆藏书目像一扇扇虚掩的门在线便能推开却不许你带走。它慷慨地提供在线阅读却把下载的门闩得紧紧的。为了把那些书页一页一页地留下来我便动了心思用 Python 写了个小玩意儿。它不贪多只盯着屏幕上一块固定的地方咔嚓一下截下来再按着顺序一张一张地存成 PNG 图像归拢到指定的目录里。日后这些零散的图片便能汇成一本 PDF也算是一种笨拙的收藏了。下面这两张便是从那阅读页面上截下来的。细看那阅读页面每页显示的位置和大小倒是纹丝不动的。只是那显示的时间却有了脾气。有时快像一阵风似的就翻过去了有时又慢慢得让你以为它睡着了。这多半是网速在作祟。因此用定时去截总是不大牢靠的。最好还是等它一页一页安安稳稳地加载完了你再不慌不忙地截一张存一张。于是我便需要一个能快、能准还能按着次序把图存好的 Python 程序。这里给出的法子核心是两样东西一个叫mss是截图的快手一个叫Pillow是存图的好手。两者搭着用既图个快也图个省心。一、前置准备安装依赖库工欲善其事必先利其器。头一桩事便是把这两个 Python 库请进门来。你打开终端或是命令提示符照着下面这行命令敲下去便是了。pip install mss pillowmss这是个专门干屏幕截图的手脚麻利比那常见的pyautogui还要快上几分尤其适合你要一口气截下许多张的场合。Pillow在 Python 里处理图片它是个老熟人了。截下来的图得靠它来规规矩矩地存成 PNG 文件。二、完整可运行代码import mss import mss.tools import os def capture_specific_area(save_dir./screenshots, area(100, 100, 500, 500), start_index1): 截取屏幕特定区域并按顺序保存为PNG格式文件 :param save_dir: 截图保存目录默认当前目录下的screenshots文件夹 :param area: 截图区域格式为(x1, y1, x2, y2) x1/y1区域左上角坐标x2/y2区域右下角坐标 :param start_index: 截图文件名起始序号默认从1开始 # 1. 创建保存目录如果不存在 if not os.path.exists(save_dir): os.makedirs(save_dir) # 2. 解析截图区域适配mss的截图格式 x1, y1, x2, y2 area monitor { top: y1, # 屏幕顶部到区域顶部的距离 left: x1, # 屏幕左侧到区域左侧的距离 width: x2 - x1, # 截图区域宽度 height: y2 - y1, # 截图区域高度 mon: 1, # 截取第1个显示器多显示器环境可调整 } 3. 初始化mss截图对象 with mss.mss() as sct: try: # 生成当前截图的文件名有序命名screenshot_001.png、screenshot_002.png... current_index start_index while True: # 4. 截取指定区域屏幕 screenshot sct.grab(monitor) # 5. 构造保存路径补零为3位保证文件名排序整齐 file_name fscreenshot_{current_index:03d}.png save_path os.path.join(save_dir, file_name) # 6. 保存为PNG文件 mss.tools.to_png(screenshot.rgb, screenshot.size, outputsave_path) print(f已保存截图{save_path}) # 7. 序号自增准备下一次截图 current_index 1 # 8. 可选按回车继续截图按q回车退出如需自动连续截图可删除此段添加延时 user_input input(按回车继续截取输入q退出) if user_input.lower() q: break except Exception as e: print(f截图过程中出现错误{e}) 主程序入口 if name main: 配置参数重点修改这里的area为你需要的屏幕区域 如何获取坐标推荐用微信/QQ截图工具截图时会显示鼠标坐标 TARGET_AREA (200, 200, 800, 600) # 示例左上角(200,200) 到 右下角(800,600)根据自己屏幕显示的坐标修改 调用截图函数 capture_specific_area( save_dir./screenshots, # 截图保存到当前目录的screenshots文件夹 areaTARGET_AREA, # 目标截图区域 start_index1 # 从第1张开始命名 )三、关键部分解释截图区域配置代码中TARGET_AREA (200, 200, 800, 600)是核心配置项你需要根据自己的需求修改。获取坐标的方法打开微信 / QQ 截图快捷键CtrlShiftA/CtrlAltA移动鼠标时会显示当前坐标记录区域的左上角和右下角坐标即可。有序文件名生成采用fscreenshot_{current_index:03d}.png命名03d表示补零为 3 位数字生成的文件名为screenshot_001.png、screenshot_002.png...这样在文件夹中排序更整齐不会出现screenshot_10.png排在screenshot_2.png前面的情况。交互逻辑可选代码中加入了 “按回车继续截图按 q 退出” 的交互逻辑适合手动控制截取时机。如需自动连续截图比如每隔 1 秒截取 1 张根据自己图像显示情况而定一般最好不使用自动连续截图毕竟有时候时间短图像显示不完整可以删除交互代码添加time.sleep()延时修改如下import time # 顶部导入time库 # 替换原有的while循环 while True: screenshot sct.grab(monitor) file_name fscreenshot_{current_index:03d}.png save_path os.path.join(save_dir, file_name) mss.tools.to_png(screenshot.rgb, screenshot.size, outputsave_path) print(f已保存截图{save_path}) current_index 1 time.sleep(1) # 每隔1秒截取1张可修改延时时间四、使用方法头一件事是把代码里那行TARGET_AREA的坐标改成你屏幕上看中的那块地方。接着运行这个 Python 程序。然后便照着提示来想截下一张就按回车想歇了就按个 q 再回车。截下来的图都会乖乖地跑到当前目录下那个叫screenshots的文件夹里去。总结这程序的筋骨是mss和Pillow两个库一个管快一个管存。用之前得先用pip把它们请来。最要紧的配置是那四个数字(x1, y1, x2, y2)定下了你要截的是屏幕上哪一块。这坐标用微信或 QQ 截图工具一看便知。存图的名儿是挨着次序来的还补了零排起队来便不会乱。你可以手动控制也可以让它自动连着截。有了这个 Python 程序再配上一台大些的显示器高些的分辨率得来的图便清晰。这法子虽不算精巧却也是获取资料的一条实在路子。
账面有钱却突然断了现金流,财务人的噩梦谁懂?去年跟一位中型制造企业的财务总监吃饭,他说了一件事让我到现在还记得。他们公司当时账面利润一直在涨,报表做得漂漂亮亮,结果突然有一天,采购部门说原材料款付…
📅 2026/7/25 20:50:01
这次我们来看一个特殊的项目——“Windows XP Home Edition元旦重制版”。这不是微软官方的更新,而是一个由爱好者基于经典Windows XP系统制作的定制版本。它主打怀旧体验,集成了大量经典软件、主题和优化,旨在让用户在现代化的硬件上也能重温那个时代的操作界面和软件生态。…
📅 2026/7/25 20:50:01
去年这个时候,我帮一个学弟看他的毕业设计,一个基于SpringBoot和Vue的“校园二手交易平台”。他花了两个月,功能堆了十几个,从商品发布、聊天系统到在线支付,界面做得花里胡哨。结果答辩时,老师问了三个问题…
📅 2026/7/25 20:50:01
【原创】分布式之消息队列复习精讲
在分布式系统中,消息队列(Message Queue, MQ)是解耦、异步、流量削峰的核心组件。无论是微服务通信、事件驱动架构,还是大数据处理,MQ 都扮演着关键角色。本文将从实战出发ÿ…
📅 2026/7/26 1:10:36
真的,我现在看到网上那些跳 geo 舞蹈 的视频,第一反应不是羡慕,是心疼。那种动作看着简单,其实就是身体在跟重力较劲,稍微用力过猛,整个人就像个生锈的机器人,尴尬得我想替屏幕里的人找个地缝钻进去。我之前也跟风练过,结果跳完觉得自己像个提线木偶。后来跟几个练舞的…
📅 2026/7/26 1:09:53
104、Arduino Nano 33 BLE Sense的语音识别案例
从一次深夜调试说起
凌晨两点,我盯着串口监视器里不断跳出的“Unknown”字样,差点把这块Nano 33 BLE Sense扔出窗外。麦克风焊盘被我反复按压了十几遍,焊锡都快磨亮了,结果还是识别不出“yes”和“no”这两个最简单的词。后…
📅 2026/7/26 1:09:36
更多请点击:
https://kaifayun.com
第一章:扣子文件处理机器人部署避坑清单(2024最新版):从权限配置到异常熔断全链路解析
权限配置的三大致命误区 扣子平台对文件类机器人强制要求细粒度权限校验。常见错误包括&…
📅 2026/7/26 1:08:36
内容: 昨天在光谷步行街,我遇到件挺糟心的事。明明站在街头,地图却显示我在江对岸。那种被科技“耍弄”的感觉,真让人上火。很多人遇到 geo 武汉 定位漂移时,第一反应是重启手机。这招确实管用,但治标不治本。我试过很多次,发现单纯重启解决不了根本问题。尤其是当你在高…
📅 2026/7/26 1:07:31
3步实战:用SyncTrayzor轻松搭建Windows跨设备文件同步系统 【免费下载链接】SyncTrayzor Windows tray utility / filesystem watcher / launcher for Syncthing 项目地址: https://gitcode.com/gh_mirrors/sy/SyncTrayzor
SyncTrayzor是Windows系统上最优雅…
📅 2026/7/26 1:07:35
更多请点击:
https://codechina.net
第一章:AI帮助理解数学概念 人工智能正以前所未有的方式重塑数学学习的路径。通过自然语言处理与符号计算的深度融合,AI不仅能解析抽象定义,还能将定理、证明和几何直觉转化为可交互、可验证的…
📅 2026/7/26 0:00:06
1. 项目背景与核心价值去年参与的一个短剧项目让我深刻体会到传统创作流程的痛点:编剧团队花了三周打磨剧本,角色设计反复修改了七版,最后成片时又因为演员档期问题不得不临时调整分镜。这种低效的创作模式在快节奏的内容行业越来越难以为继。…
📅 2026/7/26 0:00:06
remix-i18next TypeScript类型安全实践:确保翻译键与类型定义同步 【免费下载链接】remix-i18next The easiest way to translate your React Router framework mode apps 项目地址: https://gitcode.com/gh_mirrors/re/remix-i18next
在开发多语言应用时&am…
📅 2026/7/26 0:00:06
更多请点击:
https://codechina.net
第一章:AI帮助理解数学概念 人工智能正以前所未有的方式重塑数学学习的路径。通过自然语言处理与符号计算的深度融合,AI不仅能解析抽象定义,还能将定理、证明和几何直觉转化为可交互、可验证的…
📅 2026/7/26 0:00:06
1. 项目背景与核心价值去年参与的一个短剧项目让我深刻体会到传统创作流程的痛点:编剧团队花了三周打磨剧本,角色设计反复修改了七版,最后成片时又因为演员档期问题不得不临时调整分镜。这种低效的创作模式在快节奏的内容行业越来越难以为继。…
📅 2026/7/26 0:00:06
remix-i18next TypeScript类型安全实践:确保翻译键与类型定义同步 【免费下载链接】remix-i18next The easiest way to translate your React Router framework mode apps 项目地址: https://gitcode.com/gh_mirrors/re/remix-i18next
在开发多语言应用时&am…
📅 2026/7/26 0:00:06
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/25 7:09:18
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/25 17:09:47
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/25 5:09:14