复刻 Snipaste 核心体验,并内置 OCR 文字识别。主打流畅、原生、简洁。
- 纯 Apple 原生技术栈:Swift + AppKit + ScreenCaptureKit + Vision + Carbon,零第三方依赖
- 流畅:事件驱动、按需渲染、局部重绘;截图只捕获一次,交互全部基于内存位图
- 简洁:菜单栏常驻、不占 Dock、无广告无打扰,常驻内存约 30 MB
- 要求 macOS 14.0+
- 窗口智能检测:光标悬停自动吸附到应用窗口,显示窗口名,单击即选中
- 自由框选:拖拽框选任意区域,实时显示尺寸
- 放大镜:像素级放大预览 + RGB 颜色值 + 坐标读数(偏好设置可关闭)
- 选区调整:选完可通过 8 个手柄和边缘拖动微调位置与大小
- 多显示器、Retina、深色模式支持
选定区域后出现工具条:画笔、矩形、椭圆、箭头、直线、文字、马赛克, 支持 8 种颜色 × 3 档粗细,撤销 / 重做(⌘Z / ⇧⌘Z)。
| 操作 | 方式 |
|---|---|
| 复制到剪贴板 | ⏎ 回车 或 双击选区 或 工具条 ✓ |
| OCR 识别文字并复制 | 工具条 OCR 按钮 |
| 贴图 | 工具条 📌 按钮 |
| 保存 | ⌘S(格式与目录在偏好设置中配置) |
| 取消 | Esc 或 右键 |
- 将剪贴板中的图片贴为置顶浮动窗口(也支持图片文件 URL)
- 截图时点工具条 📌 直接贴出当前截图
- 拖动移动、滚轮缩放(以光标为锚点)、双击关闭、
Esc关闭 - 右键菜单:复制图像 / 保存 / OCR 识别文字 / 缩放 / 不透明度 / 阴影 / 关闭
- 贴图跨所有 Space 常驻显示
- 基于 Apple Vision 框架,设备端识别,中英文混合效果佳
- 三个入口:截图工具条 OCR 按钮、贴图右键菜单、菜单栏「识别剪贴板图片文字」
- 识别结果自动复制到剪贴板,并提示行数
从 Releases 下载 SnapPin.app.zip,解压后拖入「应用程序」。
首次打开若提示无法验证开发者:右键点击 → 打开 → 打开(应用为 ad-hoc 签名,未做公证)。
./scripts/build_app.sh # Release 构建并打包为 build/SnapPin.app
open build/SnapPin.app或开发调试:
swift build # Debug 编译
swift run # 直接运行系统会提示授予屏幕录制权限(或首次按 F1 时弹出指引):
系统设置 → 隐私与安全性 → 屏幕录制 → 勾选 SnapPin。
如已勾选仍提示失败,取消勾选再重新勾选一次,然后重启应用。
建议把 SnapPin.app 拷贝到 /Applications(登录时启动依赖 .app 包路径),
然后在菜单栏 → 偏好设置 → 勾选「登录时启动 SnapPin」。
偏好设置中点击快捷键框 →「按下新的快捷键…」→ 按下组合键即可(支持修饰键组合;
F1–F12 等功能键可不加修饰键)。若 F3 与系统的调度中心冲突,可改为如 ⌥F3。
Sources/SnapPin/
├── main.swift 入口
├── AppDelegate.swift 菜单栏 / 热键绑定 / 会话编排
├── Support/
│ ├── HotKeyCenter.swift Carbon 全局热键(系统级、零轮询)
│ ├── Defaults.swift 偏好持久化 + 按键名映射
│ ├── DrawKit.swift 统一 y-down 绘图管线(预览与合成共用,所见即所得)
│ ├── ImageUtils.swift 裁剪/像素化/剪贴板/保存
│ └── Toast.swift 轻量浮动提示
├── Capture/
│ ├── ScreenCaptureEngine.swift ScreenCaptureKit 截屏(多屏、Retina)
│ ├── WindowDetector.swift 窗口智能检测(定时快照 + 内存命中测试)
│ ├── CaptureSessionController.swift 会话生命周期
│ ├── CaptureOverlayView.swift 冻结屏覆盖层:选区/吸附/调整/工具条/快捷键
│ ├── AnnotationCanvasView.swift 标注画布(局部重绘)
│ ├── Annotation.swift 7 种标注的统一渲染
│ ├── ToolbarView.swift 工具条 + 颜色/粗细弹窗
│ └── MagnifierView.swift 放大镜
├── Pin/PinManager.swift 贴图窗口(缩放/菜单/透明度)
├── OCR/OCREngine.swift Vision 文字识别(后台队列)
└── Preferences/ 偏好设置窗口 + 快捷键录制器
性能要点:
- 截图时只捕获一次屏幕,之后所有交互都基于内存中的位图,零重复捕获
- 背景冻结画面只绘制一次;选区/标注为独立小视图局部重绘
- 窗口检测列表定时快照,光标移动只做内存级命中测试
- OCR 在后台队列执行,不阻塞 UI
已实现 Snipaste 核心体验(截图 / 窗口检测 / 放大镜 / 标注 / 贴图 / 透明度 / 快捷键自定义 / 开机自启), 并额外增加 OCR。暂未实现:长截屏、录屏 GIF、二次编辑已贴出的图、颜色拾取器历史。