200KB能做什么?mss:200KB我可以给你实现截屏功能。
是的,没错!mss库整体大小仅200KB,但是却能实现完整的截屏功能👍。
一、安装
pip install mss
二、基本使用
2.1 语法
截屏的所有操作,只需定义 with mss() as sct ,而后进行操作即可。
from mss import mss
with mss() as sct:
# ...
2.2 全屏截屏
只需使用 sct.shot 即可进行全屏截屏。
from mss import mss
with mss() as sct:
sct.shot()
2.3 截图并重命名
是的,还是超级简单,直接在 shot 方法中,传入 output 参数即可。
sct.shot(output=f'screenshot_.png')
三、高级使用
3.1 截取单屏幕指定区域
选定区域,然后获取区域截图,调用 mss 自带的工具进行文件保持即可
import mss.tools
# 定义截屏区域
monitor = {"top": 100, "left": 100, "width": 300, "height": 300}
with mss.mss() as sct:
# 获取指定区域的截图
screenshot = sct.grab(monitor)
# 保存截图
mss.tools.to_png(screenshot.rgb, screenshot.size, output='region_screenshot.png')
3.2 截取指定屏幕的指定区域
在多屏幕使用场景,可以指定特定屏幕进行截图,依然使用 monitor 进行操作,只需指定参数 mon。
import mss.tools
# 定义截屏区域,增加"mon"参数
monitor = {"top": 100, "left": 100, "width": 300, "height": 300, "mon": 1}
with mss.mss() as sct:
# 获取指定区域的截图
screenshot = sct.grab(monitor)
# 保存截图
mss.tools.to_png(screenshot.rgb, screenshot.size, output='region_screenshot.png')
3.3 基于计算截屏屏幕指定区域
mss 还支持基于计算来截取屏幕指定区域,这适合于动态截屏。
import mss
import mss.tools
with mss.mss() as sct:
monitor = sct.monitors[1]
# 使用百分数进行截取屏幕区域
left = monitor["left"] + monitor["width"] * 5 // 100 # 5% from the left
top = monitor["top"] + monitor["height"] * 5 // 100 # 5% from the top
right = left + 400 # 400px width
lower = top + 400 # 400px height
bbox = (left, top, right, lower)
im = sct.grab(bbox)
mss.tools.to_png(im.rgb, im.size, output="screenshot.png")
3.4 获取截图的PNG数据
如果需要对截图进行二次加工,mss 也支持仅采集截图的 png 对象数据,以便后续处理。
with mss.mss() as sct:
monitor = sct.monitors[1]
sct_img = sct.grab(monitor)
# 获取png对象
png = mss.tools.to_png(sct_img.rgb, sct_img.size)
实际上配合上其他处理图像的 python 库,完全可以做到对截图数据进行加工处理。下述是配合 PIL 库对多屏进行截图处理:
from PIL import Image
import mss
with mss.mss() as sct:
# 多屏幕操作
for num, monitor in enumerate(sct.monitors[1:], 1):
sct_img = sct.grab(monitor)
# 创建图片对象
img = Image.frombytes("RGB", sct_img.size, sct_img.bgra, "raw", "BGRX")
# 保存图片
output = f"monitor-{num}.png"
img.save(output)
print(output)
3.5 命令行操作
如果不想撰写代码实现截屏功能,你甚至可以直接用命令行进行截屏。
# 截取当前主屏
mss
# 截取当前主屏并重命名为screenshot.png
mss -o screenshot.png
# 选定截取范围
mss -c 100,100,800,600
命令行截图操作示意如图:
相关的操作参数说明:
-h,--help- 显示帮助信息-c COORDINATES,--coordinates COORDINATES- 要截取的屏幕区域:上边距, 左边距, 宽度, 高度-l {0,1,2,3,4,5,6,7,8,9},--level {0,1,2,3,4,5,6,7,8,9}- PNG压缩级别-m MONITOR,--monitor MONITOR- 要截图的显示器-o OUTPUT,--output OUTPUT- 输出文件名-b BACKEND,--backend BACKEND- 平台特定的后端- Linux: default/xlib/xgetimage/xshmgetimage
- macOS/Windows: default
--with-cursor- 包含光标-q,--quiet- 不显示创建的文件信息-v,--version- 显示程序版本号
当然,mss 还有其他的操作,具体可以查看官网指导文档:Installation - Python MSS latest documentation
好啦,今天的介绍就到这里了,感谢阅读!欢迎三连和关注呢。