各位佬好,分享一下自己做的开源截图软件 Snow Shot
之前花了一年做了第一版,这次又花了一年,把它从头重写了一遍
老版本基于 Tauri ,平时挂在后台就要占五六百 MB……确实有点夸张
所以这次重写,最先想解决的就是内存占用
先放一个新版的实测结果:初始状态下,初始状态下,私有工作集内存约 9.7 MiB,完整数据和测量条件放在下面
原来的界面风格保留了下来(从 Web 组件库一步一步迁到 Qt ,挺不容易的……),截图响应、选区动画和标注绘制都彻底重做了
这次用了什么技术
主要是 Qt Widgets 、Rust
- 界面和交互: 用 Qt Widgets 尽可能复刻 Ant Design 组件库
- 截图、录屏等底层模块: 用 Rust 实现,通过 C FFI 与 C++ 对接
- 标注绘制: 自己维护的绘图引擎,按截图标注的需求调整
- 图形处理: Windows 和 macOS 分别做适配和优化
性能这次认真补课了
同类截图软件的内存实测
在同一台运行 Windows 26H2 的电脑上,用 VMMap 记录了三个软件主进程的内存
测试使用单台 4K 显示器,捕获区域略小于 3840 × 2160
每个软件分别记录初始状态、通过托盘触发截图 10 次后,以及截图并贴图 10 次后的数据
以下均为单次快照,单位为 MiB
私有提交内存、总工作集和私有工作集分别列出,前面提到的 9.7 MiB 对应最后一列
| 软件 | 测量状态 | 私有提交内存( Private Bytes ) | 总工作集(驻留 RAM ) | 私有工作集 |
|---|---|---|---|---|
| Snow Shot | 初始状态 | 15.45 | 46.17 | 9.68 |
| Snow Shot | 截图 10 次后 | 22.39 | 62.84 | 16.11 |
| Snow Shot | 截图贴图 10 次后 | 32.03 | 81.43 | 24.33 |
| Snipaste | 初始状态 | 33.53 | 76.45 | 26.00 |
| Snipaste | 截图 10 次后 | 34.29 | 83.24 | 26.75 |
| Snipaste | 截图贴图 10 次后 | 102.54 | 152.66 | 94.96 |
| 某 P | 初始状态 | 70.23 | 91.09 | 32.67 |
| 某 P | 截图 10 次后 | 136.06 | 127.80 | 65.99 |
| 某 P | 截图贴图 10 次后(重启后)* | 180.01 | 177.11 | 106.43 |
- 部分软件在空闲时会调用 EmptyWorkingSet ,此后的私有工作集数值可能明显降低,不作为这里的比较依据
绘制上主要加了局部重绘和缓存:尽量只更新变化的区域,减少重复计算和绘制,选区过渡动画、拖动和标注响应也重新调整过
笔记本上的功耗也有考虑,这次采用了软件渲染,减少不必要的刷新
录屏则在支持的设备上使用 GPU 处理和硬件编码
之前因为卡顿或者占内存卸载过的佬,欢迎回来再试试
有什么功能
截图和标注
- 矩形、椭圆、箭头、文字、马赛克等常用标注
- 自动识别可能需要打码的区域
- 智能擦除图片里不想保留的内容,尽量保留原来的背景
- 水印模板、标注模板,常用内容直接复用
- 把图像、文本等内容固定到屏幕上,方便边看边操作
文字和表格识别
- OCR 文字提取,可按需要配置识别模型
- 表格提取,尽量保留行列结构
- 借助 AI 视觉模型,把图片内容转成 Markdown 等可编辑内容
屏幕录制
- 划选区域后直接录制
- 鼠标轨迹、按键显示
- 声音录制
- 进度条录制
- 高帧率录制
- 视频裁剪
开着 HDR ,也能好好截图
用 HDR 显示器的佬可能遇到过:屏幕上看着正常,截出来却发白、过曝,发图之前还得先去关 HDR
这次重新做了截图和录屏的 HDR 处理,尽量减少过曝、发白的问题,下面放两张开启 HDR 时的截图作对比:
Snipaste HDR 截图 Snow Shot HDR 截图
- 图一为 Snipaste 的截图,图二来自 Snow Shot
通过 MCP 调用截图、OCR 和录屏
Snow Shot 支持 MCP ,可以接入支持 MCP 的 AI 客户端,也可以自己写程序调用,接口包括:
- 截取屏幕、设置选区、添加和修改标注
- OCR 、表格识别、识别结果导出
- 在后台打开图片,处理后保存
- 开始、暂停、停止录屏
- 管理贴图、模板、历史记录和设置
- 查询、取消后台任务,读取处理结果
比如把“截图 → 标出重点 → 保存”串起来,或者批量打开图片、提取文字、导出结果
想简单一点,也有 Snow Shot Mini
如果只是想截个图、画个箭头,上面不少功能确实用不上,所以这次还做了 Snow Shot Mini
Mini 和完整版共用同一套底层,保留截图、标注、贴图、录屏这些日常功能,精简了表格识别、翻译、图片转文档等扩展能力
OCR 入口默认隐藏,需要时可以在设置里开启手动 OCR ,相关模型按需下载
两版可以按使用需求选:
| 使用需求 | 版本 |
|---|---|
| 经常提取表格、翻译、把图片转成文档 | Snow Shot |
| 主要截图、标注、贴图,偶尔录屏或提取文字 | Snow Shot Mini |
开源、免费范围和平台支持
Snow Shot 和 Mini 的软件功能都免费,源码也公开,下面整理了和 Snipaste 、某 P 在授权和平台支持上的区别:
| 对比项 | Snow Shot / Snow Shot Mini | Snipaste | 某 P |
|---|---|---|---|
| 开源状态 | 开源,应用采用 GPL-3.0-or-later,可查看、修改和编译源码 | 闭源,按官方许可协议授权使用 | 闭源,按官方服务协议授权使用 |
| 免费范围 | 各版本提供的软件功能均免费,无需会员解锁; Mini 按使用需求精简功能 | 基础功能可免费用于个人用途;部分进阶功能需购买 PRO | 大部分功能免费;表格识别、录屏键鼠显示、录制后剪辑等需会员 |
| 公司 / 商业场景使用 | 无需购买软件使用授权 | 2.x 需购买 PRO ; 1.x 可免费用于个人和商业场景 | 免费版也可在公司内使用 |
| 桌面平台支持 | Windows 、macOS(均支持 Arm64 和 x64 ) | Windows 、macOS 、Linux | Windows 、macOS |
项目地址
这次重写用到了 Qt 、Rust 、RapidOCR 、FFmpeg 等开源项目,感谢这些项目的维护者,也欢迎大家给 Snow Shot 提 issue 或参与开发
官网:snowshot.top
下载:GitHub Releases
源码:GitHub
OCR 速度问题
重写后的 Snow Shot 在默认配置下会比旧版的识别更慢,可以开启“常驻识别进程”和“模型热启动”以加快 OCR 识别速度。如果是独立显卡的话,还可以尝试开启“DirectML 加速”开启硬件加速。