在 HDR 屏幕越来越普及的今天,一张普通 JPEG 也能玩出新花样。近日,一位开发者在 Hacker News 发布了 Show HN 项目 soverybright.com:他注意到 LinkedIn 上某些头像和 Logo 明显比周围内容更白、更亮,深挖后确认,这是给 JPEG 附加「增益图」(gain map)造成的效果,一种只在 HDR 屏幕(如新款 MacBook Pro)上才会显现的隐藏图层。他顺手做了个工具,让任何人都能给自己的 Logo 加上这层增益,开发过程还大量借助了 Claude Code。
藏在 JPEG 里的第二张图
JPEG 是为 SDR 时代设计的格式,但现代 HDR 摄影一直面临一个矛盾:怎么让同一个文件在旧设备上看起来正常,在新设备上又能展现高光细节?业界的答案是增益图——在同一个文件里(通常借助 MPF 多图容器)额外存一张灰度图和一组元数据,记录每个像素「最多还能再亮多少」。SDR 设备只解码基础图,所见即所得;HDR 设备则按屏幕余量把基础图与增益混合渲染,高光可以突破 SDR 参考 white(按 BT.2408 约为 203 nits),直接顶到屏幕峰值亮度。
这套机制并不小众:Google 在 Android 14 引入了 UltraHDR,Apple 在 iOS 17 与新版 macOS 上推出 Adaptive HDR,Adobe 也是主要推手,相关方案后来走向了 ISO 标准化。你手机拍的 HDR 照片,很可能就靠增益图兼容旧设备。
问题出在「谁来剥掉它」
按惯例,社交平台上传图片时都会重新压缩转码,而转码通常会顺手剥掉增益图。但这位开发者发现,LinkedIn 是目前唯一没这么做的主流社交网络——原样透传 JPEG,意味着增益图完好无损地抵达了读者的 HDR 屏幕。于是出现了「别人的内容都是普通亮度,我的 Logo 在发光」的奇观。
这件事的影响可以分几层看:
- 对平台:任何「直传原图」或转码不彻底的产品都可能中招。要不要剥离增益图,正在变成内容管线里一个必须显式回答的工程决策。
- 对用户:注意力经济找到了新弹药。广告主完全可以把品牌 Logo、促销标签做到上千 nits,实现物理意义上的「更亮」。对光敏感用户来说,这未必是好消息。
- 对生态:渲染端并不统一。Chrome 和 Safari 已支持增益图渲染,但不少桌面环境会直接忽略这层数据,同一张图,不同设备看到的是两个世界。
几句点评
增益图本身是个相当优雅的设计:向后兼容、增量扩展、旧设备零成本。但这个案例提醒我们,显示栈里的每一分「余量」,最终都会被营销用满,从 <blink> 标签到弹窗再到亮度,套路从未变过,只是计量单位从像素变成了 nits。
真正值得关注的不是这个小工具,而是它暴露出的守门机制:平台看似多余的重编码,其实一直在替我们过滤这类「私货」。当某个平台决定信任原图时,它同时也交出了对视觉噪声的最后否决权。可以预见,接下来会有平台在转码管线里默默加上一行「strip gain map」,这大概是这个故事最现实的结局。