
我做了个能真正截到 HDR 的 Windows 截图工具
你有 HDR 显示器吗?如果有,你可能也遇到过这个问题:
游戏里 HDR 开着,Windows HDR 也开着,画面亮得刺眼、色彩饱满。但你一截图——高光全没了,亮的地方变成灰白色,颜色像蒙了一层雾。
先放下载链接:
Github Release现有截图工具为什么截不到 HDR
一句话:它们走的是 GDI 路径,而 Windows 在这条路径上强制做了 HDR → SDR 降级。
Windows 的 DWM(桌面窗口管理器)在 HDR 模式下,内部合成用的是 16bit 浮点 scRGB 数据,高光亮度可以超过 1.0(对应上千 nit)。但 GDI 是 8bit SDR 时代的 API,看不懂浮点。DWM 为了兼容,专门把 HDR 结果色调映射成 8bit SDR 喂给 GDI。
所以任何走 BitBlt 的截图工具——Windows 自带的 Snipping Tool、Win+Shift+S——拿到的都是这个降级后的副本。高光截断在约 80 nit,色域收窄到 sRGB。
对比图详情请见 GitHub,这里不好放HDR图片
Starshot 怎么绕过这个限制
用 Windows Graphics Capture(WGC)API,直接从 DWM 输出层取帧——拿到的是原始的 R16G16B16A16Float scRGB 浮点数据,不经过 GDI 兼容层。
简单说就是:DWM 自己用的那张 HDR 帧,Starshot 直接拷一份。
然后编码成 16bit HDR AVIF 或 JPEG XL,色彩空间写入 BT.2020 + PQ。全程 16bit,不做有损色调映射。
传统截图工具(GDI/BitBlt) 和 Starshot(WGC) 的数据流对比:

核心特点
- 🎯 HDR 全链路无损 — 捕获、编码、色彩管理全程 16bit
- 🧠 智能 HDR/SDR 判定 — 自动区分真实 HDR 内容与 HDR 格式包裹的 SDR 内容,避免无谓占空间
- ✂️ 区域截图 — 冻结帧覆盖层 + 窗口检测 + 像素级放大镜
- 🖥️ 多显示器 — 区域截图可跨屏框选,直接组合截取横跨多屏的图像
- 📋 原生剪贴板 — Win32 原生 API 直写,粘贴可靠不丢内容
- 🗂️ 多格式 — AVIF / JPEG XL / UHDR JPEG / PNG,含批量转换
- 🔄 自动检查更新 — 内置更新检查,流式下载解压替换

区域截图
不只是”框选一块区域”那么简单:
- 冻结帧:先截所有显示器合成一张静态图,选区时画面不动
- 窗口检测:鼠标移到窗口上自动高亮,单击直接截该窗口
- 像素级放大镜:选区时跟着鼠标的放大镜,15×15 像素网格,每个像素都能看清
- 跨屏框选:选区可以横跨多个屏幕,截出来是组合图像

SDR 显示器也能用
没有 HDR 显示器?Starshot 自动走标准 SDR 截图路径——区域截图、多格式、剪贴板、批量转换,该有的都有。它首先是一个完整的截图工具,HDR 只是它最硬核的那张牌。
开源
GitHub:
Github - StarshotMIT 协议,完全开源。支持 x64 和 arm64。
如果觉得有用,请给项目点个 Star ⭐ 支持一下吧
一句话总结:如果你有 HDR 显示器,想截出真正保留高光和色域的画面,Starshot 是目前 Windows 上少数能做到的方案。没 HDR 也照样好用。