Skip to content

Latest commit

 

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SnapPin — 轻量级 macOS 截图贴图工具

复刻 Snipaste 核心体验,并内置 OCR 文字识别。主打流畅、原生、简洁

  • 纯 Apple 原生技术栈:Swift + AppKit + ScreenCaptureKit + Vision + Carbon,零第三方依赖
  • 流畅:事件驱动、按需渲染、局部重绘;截图只捕获一次,交互全部基于内存位图
  • 简洁:菜单栏常驻、不占 Dock、无广告无打扰,常驻内存约 30 MB
  • 要求 macOS 14.0+

功能

截图(默认快捷键 F1

  • 窗口智能检测:光标悬停自动吸附到应用窗口,显示窗口名,单击即选中
  • 自由框选:拖拽框选任意区域,实时显示尺寸
  • 放大镜:像素级放大预览 + RGB 颜色值 + 坐标读数(偏好设置可关闭)
  • 选区调整:选完可通过 8 个手柄和边缘拖动微调位置与大小
  • 多显示器、Retina、深色模式支持

标注

选定区域后出现工具条:画笔、矩形、椭圆、箭头、直线、文字、马赛克, 支持 8 种颜色 × 3 档粗细,撤销 / 重做(⌘Z / ⇧⌘Z)

操作(工具条 / 快捷键)

操作 方式
复制到剪贴板 回车 或 双击选区 或 工具条 ✓
OCR 识别文字并复制 工具条 OCR 按钮
贴图 工具条 📌 按钮
保存 ⌘S(格式与目录在偏好设置中配置)
取消 Esc 或 右键

贴图(默认快捷键 F3

  • 将剪贴板中的图片贴为置顶浮动窗口(也支持图片文件 URL)
  • 截图时点工具条 📌 直接贴出当前截图
  • 拖动移动、滚轮缩放(以光标为锚点)、双击关闭、Esc 关闭
  • 右键菜单:复制图像 / 保存 / OCR 识别文字 / 缩放 / 不透明度 / 阴影 / 关闭
  • 贴图跨所有 Space 常驻显示

OCR(新增功能)

  • 基于 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」。

快捷键自定义

偏好设置中点击快捷键框 →「按下新的快捷键…」→ 按下组合键即可(支持修饰键组合; F1F12 等功能键可不加修饰键)。若 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 的差异

已实现 Snipaste 核心体验(截图 / 窗口检测 / 放大镜 / 标注 / 贴图 / 透明度 / 快捷键自定义 / 开机自启), 并额外增加 OCR。暂未实现:长截屏、录屏 GIF、二次编辑已贴出的图、颜色拾取器历史。

About

轻量级 macOS 截图贴图工具:复刻 Snipaste 核心体验 + 内置 OCR,纯 Swift 原生,零第三方依赖

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages