退化式 JPEG
来源:maurycyz.com — 2026-07-17
📋 概述
JPEG 的渐进式(progressive)编码允许先传输低频分量、再逐步补充高频细节,因此图片在慢速网络下会先显示低分辨率预览,再逐渐变清晰。作者反其道而行,利用“后续扫描可以覆盖已渲染数据”的特性,把多张图片的扫描段拼接成一个文件,让浏览器在加载过程中不断切换显示不同画面,从而把一段“视频”塞进单张 JPEG。由于无法插入时间信息,播放节奏完全取决于网络延迟,实用价值不高,但作为一个恶作剧或技术玩具非常有趣。
🔑 核心要点
渐进式 JPEG 通过多个扫描(scan)依次传输 DC/AC 系数,实现由模糊到清晰的加载效果。
每个扫描都明确声明了频谱范围 ,因此可以构造出让后续扫描覆盖旧数据的文件。
把多张同分辨率 JPEG 去掉 SOI/SOF/EOI 标记后拼接,就能在加载时在不同图像间切换。
浏览器通常会限制最大扫描数(约 90 个),以防止类似 zip bomb 的攻击。
每个“帧”只保留 DC 扫描可最大限度减少扫描数,得到约 1/16 分辨率的帧。
使用 jpegtran -scans 即可生成 DC-only 帧,无需特殊工具。
这种“视频 JPEG”没有实用价值,因为播放速度完全受网络延迟控制。
💡 金句
Besides unconventional rickrolls and other trolling, this has no practical applications: there's no way to add timing information, so playback is entirely dependent on network delay.
👍 0
❤️ 点赞
👎 0
沉底
← 返回 Lobsters 首页