JPEG 结构检查器
像解码器一样从 SOI 到 EOI 逐个标记走完整个 JPEG,说明每个段是什么、从哪里开始、占多少字节。帧头(SOFn)给出尺寸、样本精度、分量数和抽样因子,而它的标记编号同时决定文件是基线还是渐进:浏览器把基线图逐行画出来,把渐进图先显示成一整幅粗糙画面再逐步变清晰,这是像素里看不出来的差别。抽样因子会换算成常见的 4:4:4、4:2:2、4:2:0 记法,并同时给出原始数字,于是照片发虚的原因可以归到以一半分辨率保存的色度上,而不是质量设置。量子化表会与标准附录 K 的示例表比较:如果只是 libjpeg 按倍率缩放过的标准表,就能反推出生成它的确切质量值;否则显示的是平均值,并标注为估算,因为 MozJPEG、Photoshop 和多数相机固件用的是自己的表或自己的缩放方式。应用段会连同大小一起列出,文件变大的真正原因通常就在这里:拆成多个 APP2 分片的 ICC 配置文件、带缩略图的 EXIF、编辑软件留下的 XMP、Photoshop 的 APP13 资源块,都会按字节数和占文件的百分比列出。EXIF 只报告是否存在和大小,标签内容请用本站的 EXIF 查看器阅读。编码部分还会给出重启间隔、霍夫曼表数量、扫描次数,以及熵编码数据占比——那才是重新压缩真正能缩小的部分。最后它会说明文件是否真的以 EOI 结束、后面还跟着多少字节,因为解码器会忽略尾部数据,这正是 JPEG 多格式文件的做法。它不会解码像素,也不评判画质;在扫描数据中间被截断的文件会被拒绝而不是读一半,因为截断点之后的任何数字都不可信。
使用方法
- 把 .jpg 拖到方框里,或点击选择文件。不会上传,字节在页面内读取。
- 先看概览:尺寸、基线还是渐进、色度抽样和估算质量。
- 文件异常大时查看应用段表格:小图里 ICC 配置文件或 EXIF 缩略图可能比画面本身还重。
- 展开量子化表,查看真实矩阵,以及它是标准附录 K 表还是编码器自定义表。
- 浏览标记列表找异常:缺少 JFIF 头、陌生的 APPn,或 EOI 之后残留的字节。
常见问题
- 基线还是渐进?工具怎么判断,这个区别重要吗?
- 由一个字节决定。基线文件的帧头是 SOF0,渐进文件是 SOF2,本工具读取实际标记而不是看画面猜测。区别在于加载过程中的显示方式:基线 JPEG 只有一次自上而下的扫描,因此逐行填充;渐进 JPEG 存成多次扫描,逐步细化整幅画面,所以收到几千字节后就能看到模糊的全图。渐进文件通常小几个百分点,因为系数分组后更易压缩,但解码要占用更多 CPU 和内存,所以很多流程会让极小的图片和缩略图保持基线格式。
- 为什么质量只是估算值?
- JPEG 文件并不保存质量数字,保存的是量子化表,编码器的质量滑块只是生成这些表的规则。libjpeg 取附录 K 的示例表,对每个系数乘以由滑块推出的同一个缩放系数,所以这个过程可以反推:当表恰好等于按倍率缩放的附录 K 表时,工具会指出这一点,给出的数字就是当初传给 libjpeg 的值。而 Photoshop、MozJPEG、Guetzli 和多数相机固件使用自定义表或自定义缩放,这时只能求平均,因此标注为估算。重新保存也会切断这层关系:用 90 编码后再用 95 保存的文件,表是 95 的,细节还是 90 的。
- 质量已经很高,照片还是发虚,该看哪里?
- 看色度抽样,它和质量是两个独立的设置。在 4:2:0 中两个色度通道以一半宽度和一半高度保存,所以蓝底上的红线、彩色文字、饱和度高的标志边缘只能用四分之一的色度样本重建,无论质量调多高都会发糊。本工具从帧头的抽样因子推断,并在记法旁边给出原始数字:亮度 2×2 配色度 1×1 是 4:2:0,亮度 2×1 是 4:2:2,全部 1×1 是 4:4:4。多数编码器在质量 90 左右会自动切到 4:4:4,这也是为什么以 95 导出的图像看起来比单纯量化差异所能解释的更清晰。
- 文件比画面应有的大小大得多,字节去哪了?
- 看应用段的合计。ICC 配置文件是常见元凶:完整的 v4 配置文件有几十千字节,而一个 JPEG 段最多只能放 65,533 字节,于是被拆成多个 APP2 分片,本工具会替你数清楚。EXIF 块常常内嵌缩略图,编辑软件写入的 XMP 可能是几千字节的 XML,Photoshop 的 APP13 资源块还保留着你在网页上永远用不到的路径和切片。熵编码数据的比例是另一半答案:如果扫描数据只占文件的 40%,再怎么重新压缩图像也没用,删掉元数据才有效。
- 重启间隔是什么,为什么要用?
- DRI 段设定重启间隔后,编码器每 N 个 MCU 就写一个 RST 标记,并在那里重置熵编码器的状态。代价是体积略增,换来两点好处:出现坏字节时解码器能在该处重新同步,而不是丢掉后面整幅图像;重启点之间的块还可以并行解码。网页上的 JPEG 大多没有重启间隔,它更常见于扫描仪、广播设备和为硬件解码器准备的文件。设置了的话,本工具会给出以 MCU 为单位的间隔,而 RST 标记本身作为扫描的一部分被跳过,不会列进段列表。
- 为什么看图软件能正常打开的文件会被拒绝?
- 因为看图软件可以宽容,结构报告不能。如果文件没有 EOI 标记就结束了,说明它在压缩数据中间被截断,解码器会把已经读到的行显示出来,但标记链没有终点,此时给出的任何合计都只是碎片的合计。段声明的长度超出文件末尾时同理:那个位置之后无法读取,把前面的段当作完好文件来报告,比什么都不说更糟。这两种情况在这里都是有名字的错误,开头不是 SOI 标记的文件也一样,常见原因是把 PNG 改名成了 .jpg。
相关工具
GIF 结构检查器
打开 .gif 并逐块读取:每帧的延迟与处置方式、循环设置、调色板、透明索引,以及每一帧真正占用了多少字节。
图像海报化
把照片每通道缩减为 N 级,获得平面海报艺术风格;可选 Floyd-Steinberg 抖动与按通道独立级数控制。
图片 EXIF 查看器
拖入照片即可查看 EXIF 元数据 — 相机、镜头、曝光、GPS — 全部在浏览器中处理,无任何上传。
图片压缩
在浏览器中压缩并缩放 JPEG、PNG 和 WebP 图片。
摄像头测试与拍照
检查摄像头是否正常并用定时器拍照。视频不会离开你的设备——不上传,也不录制。
图像直方图
拖入图像查看其 RGB 与亮度分布,提供每通道均值、中位数与裁剪点统计。