Windows 长截图:不限方向、不限次序地滚,它跟着拼

在大多数工具里,「长截图」等于「自动往下滚,滚到底为止」。快咔换了个做法:进入长截图后你自己滚——上下左右、来回反复都行,它在旁边看着,把每一个停稳的画面拼到同一张画布上。聊天记录、超宽表格、比屏幕高得多的设计稿,都能一张出图。

最后更新 2026-09-09

为什么别的长截图只能往下滚

传统滚动截图的实现是「注入一次滚动 → 截一帧 → 再注入一次滚动」,方向由程序决定,你只能看着它滚。这套流程有两个先天限制:一是只有纵向,横向超宽的表格、时间线、甘特图根本截不了;二是次序固定,中途想回头补一段就得从头再来一次。

快咔把主导权换了个方向:滚动由你操作,程序只负责观察和拼接。控制条上仍然留着 ↓ ↑ ← → 四个自动滚动开关,可以随时切换或停止,滚到边会自己停下——但那是可选项,不是唯一路径。

结果是「拼接」和「滚动方向」彻底解耦。你朝哪个方向滚,画布就朝哪个方向长;来回滚过的区域会落回同一个位置,不会重复拼一遍。

二维自由拼接是怎么做到的

拼接的难点不在于把两张图叠起来,而在于判断第二张相对第一张究竟挪了多少。这套匹配器现在整个跑在原生 C 里,单次匹配 50 到 150 毫秒。它是被一次真实的翻车逼出来的:有人报「正常往下滚,拼出来是乱的,同一个页面往上滚又是好的」——下面每一条都是那次排查的结论。

  • 静止锚点制:只在内容停稳(帧差接近零)的那一刻做匹配。逐帧追踪平滑滚动动画看起来更连续,实测却是个误差积累器,滚得越久偏得越远。
  • 稠密优先,描述子让位:老做法是拿特征点的五点十字描述子投票选峰。在列表、表格、聊天记录这类模板化重复的内容上,错行的假峰能拿到和真峰一样漂亮的描述子分数——这正是「往下滚拼错乱」的根因。现在描述子只负责提名候选,选峰一律回到内容像素上逐点比对。
  • 两个指标一起打分:只在锚点的高能量内容行、且只在有边缘的内容位上统计差异像素占比。「干净行占比」管粘滞表头——固定不动的表头会让「一点没滚」这个假偏移也攒出一把完全一致的行,但占比只有 32%,真偏移是 50%;「均值」管模板双生——错行假偏移的干净行数能和真偏移并列,可少数字形终究有差别,均值感知得到。
  • 扫描步长是量出来的:整像素滚动加上占比度量,对齐峰只有一个采样宽,偏 1 像素得分就掉到 0.7。所以纵横两轴各做一遍步长 1 的一维精扫(纯竖、纯横占现实里的绝大多数),再用步长 4 的二维粗扫兜住斜着滚的情况。
  • 候选去重必须「更好则替换」:先到的那个偏 1 像素的邻居分数很差,但好过当时的末位,于是占住候选名额,把随后到达的精确峰挡在门外。实测里就是这样让一个差 1 像素的位移挤掉了完全正确的那个。
  • 逐级换域精调:先在模糊图上找到盆地(它容忍 1 到 2 像素的未对齐),再回到原图把位置收到 1 像素。换级时分数必须重算,不能把模糊域里的并列分带下去。

验证不靠肉眼:test/long-stitch.test.cjs 用离屏渲染的长页面当地面真值,按已知偏移裁出视口帧成对喂进匹配器,十条断言锁住四个方向、55 到 220 像素的大步长、粘滞表头、周期内容的歧义契约、无重叠帧与无关帧的拒绝,以及单次匹配低于 300 毫秒。

聊天记录、宽表格、长网页分别怎么截

  • 聊天记录长截图:选区框住聊天区域,进长截图后用滚轮往上翻历史。翻过头了就往回滚一点,重复的那段会落回原位,不会拼成两遍。
  • 宽表格:横向拖滚动条,或者按住 Shift 滚滚轮。横向拼接和纵向是同一套逻辑,不需要切换模式。
  • 网页长截图:可以直接用控制条的 ↓ 自动滚动,滚到底部会自己停。中途想插一段横向的,随时切方向就行。
  • 完成:点控制条的 ⏹ 才真正合成出图,图片进剪贴板同时可另存为 PNG。在那之前你一直可以继续补。

拼不好的情况,我们直说

强周期的内容——表格线、等距列表、规则条纹——在周期整数倍的偏移上是物理上无法分辨的:贴上去每一个像素都对得起来,只是整整错了一行。这种时候匹配器返回的是「歧义」,界面提示「没接上」,绝不去猜。低纹理内容(纯色渐变、大片空白)同理,没有足够的内容位可比就直接拒绝。判据故意收得紧:宁可让你往回滚一点重来,也不给你一张看起来对、实际上错位的长图。

固定表头、悬浮工具条、常驻侧边栏会被重复拼进画面。匹配器本身已经能在固定表头下正常接上(靠上面说的干净行占比把固定带排除在外),但那条带子仍然会出现在最终的画布里——这是所有基于画面拼接的滚动截图工具的共同边界。遇到这种页面,把选区框在表头下面往往就解决了。

长截图依赖原生插件(区域抓屏与滚动注入)。插件缺失时软件退回基础截图,长截图按钮直接不出现——不出现比点了报错更诚实。

长截图相关的操作与按键

按键 / 入口作用
Ctrl+Shift+A区域截图。拖拽拉框,或悬停自动吸附窗口后单击选中
工具条 📜用当前选区进入长截图,之后由你自己滚
滚轮 / 拖动滚动内容。任意方向、任意次序,来回都行
↓ ↑ ← →控制条上的自动滚动开关,随时切换或停止,滚到边自动停
⏹完成拼接并合成出图(PNG 落盘 + 进剪贴板)
Esc取消本次长截图

常见问题

Windows 有自带的长截图吗?
没有。Win10 / Win11 自带的截图工具支持矩形、窗口、全屏和录屏,不含滚动截图。要长截图得用第三方工具。
长截图会把鼠标指针拍进去吗?
不会。快咔走的是原生 GDI 抓屏路径,出图天然不含鼠标指针。
拼出来的图能有多大?
取决于你滚了多远,画布是二维动态扩张的。工作画布的上限是 8000 万像素,到顶时状态栏会直说并请你点完成,而不是悄悄停止拼接或者开始丢帧。
为什么以前往下滚会拼错,往上滚却是好的?
那是老匹配器拿描述子投票选峰留下的坑:在列表、表格这类模板化重复的内容上,错一行的假峰能拿到和真峰一样的描述子分数,往下滚正好最容易撞上。已经在 v0.0.31 修掉——匹配器整个重写成原生 C,选峰改回内容像素上的逐点比对,描述子只做候选提名。
长截图能左右滚吗?
能,而且左右和上下可以混着来。这正是「二维自由拼接」的意思:你怎么滚,它怎么长。

继续看