[程序员] 拥有超丰富功能的开源截图软件,使用 Qt Widgets + Rust 实现,高性能+低内存+低功耗!
各位佬好,分享一下自己做的开源截图软件 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 对应最后一列
● 部分软件在空闲时会调用 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 和 Mini 的软件功能都免费,源码也公开,下面整理了和 Snipaste 、某 P 在授权和平台支持上的区别:
项目地址
这次重写用到了 Qt 、Rust 、RapidOCR 、FFmpeg 等开源项目,感谢这些项目的维护者,也欢迎大家给 Snow Shot 提 issue 或参与开发
官网:snowshot.top
下载:GitHub Releases
源码:GitHub
OCR 速度问题
重写后的 Snow Shot 在默认配置下会比旧版的识别更慢,可以开启“常驻识别进程”和“模型热启动”以加快 OCR 识别速度。如果是独立显卡的话,还可以尝试开启“DirectML 加速”开启硬件加速。
Post #236643
2