图片信息到底藏了几层?我把一张照片拆开看,才发现查不出来的图往往不是没改过

关键词:图片信息, EXIF元数据, 图片压缩, AI水印, 图片溯源

摘要:大多数人看图片信息只看到画面内容,其实一张图里同时住着像素层、元数据层和语义层三份信息。这篇从一次修图翻车的经历讲起,拆解EXIF、JPEG量化表、传感器指纹、平台二次编码和C2PA内容凭证,给出可操作的三步自查方法。

起因是一张被我自己搞砸的图

图片

去年秋天帮一个做二手器材的朋友看货,他发来一张据说是某台相机实拍的样张,让我判断快门数大概多少。我第一反应是拖进看图软件看 EXIF,结果读出来干干净净,只剩一个 Make: Apple 和一行模糊的 Software 字段。当时我判断这是手机翻拍的,跟他说了。后来见面才发现,那是他用一台老单反拍的,只是中间过了一趟微信、又用某个修图 App 导出过一次,元数据被剥得只剩壳。那次之后我才认真去拆图片的信息结构,越拆越觉得大部分人(包括当时的我)对「图片信息」的理解,其实只停在最表面那一层。

我把这个理解整理成三层:像素层、元数据层、语义层。语义层是你眼睛看到的内容,一个人在巴黎铁塔下笑;元数据层是相机、镜头、光圈、快门、ISO、GPS、时间戳这些字段;像素层则是画面本身的微观结构——8×8 的 DCT 变换块、量化表、色度子采样方式、传感器噪点模式。讽刺的是,语义层最好骗,元数据层最容易丢,只有像素层最老实,但绝大多数人从来不看它。

元数据这层,最容易骗人也最容易被骗

图片

先说元数据的坑。EXIF 里有个字段叫 Orientation(标签号 0x0112),值 6 表示顺时针旋转 90 度,8 是逆时针。手机竖着拍的时候传感器其实是横的,靠这个字段告诉软件怎么转。有些老工具读图不认这个字段,就会出现「明明拍的是竖图,打开是横的」。还有个更隐蔽的:EXIF 里通常嵌了一张缩略图(标签 0x0201 指向偏移,0x0202 是长度),很多人裁完图只覆盖了主图,缩略图没更新——你把一张合影裁成只剩一个人,缩略图里可能还是原来那几个人的脸。我见过有人在论坛发「原图直出」被人扒出来,就是栽在缩略图上。

另一头是假元数据。用 Photoshop 导出 JPEG,默认会在 XMP 里写一行 Software: Adobe Photoshop 24.x,用 exiftool 一条 grep 就能捞出来。所以「改过图」这件事,在元数据层基本藏不住细节,只能整段删掉。于是出现一种反常识的情况:一张 EXIF 完整得不像话、参数又特别漂亮的图,反而要警惕,因为真机直出的图往往带着一堆无意义的字段,比如 MakerNote、测光模式、白平衡微调,P 得再干净也编不出这些。

像素层才是本体,删掉 EXIF 不等于洗白

图片

真正有意思的地方在像素层。JPEG 压缩会把图像切成 8×8 的小块做离散余弦变换,再用一张量化表去砍高频系数,压缩质量的高低就体现在这张表上。不同软件、不同版本导出的 JPEG,量化表往往有细微差别,这被叫做量化表指纹,可以用来猜图是哪个软件出的。更狠的是传感器的固定模式噪声(PRNU),同一台相机拍的每一张照片,都会带上同一组微弱的、肉眼看不见的噪点纹理,业界拿它做相机溯源,准确率在有足够样本时相当可观。

但这里有个大坑:只要你把图重新编码一次(哪怕什么都不改,只是另存为),像素值就会变,PRNU 和量化表指纹一起报废。至于大家常听说的 ELA 误差水平分析——就是看哪里压缩痕迹不一致——它只对「未重新保存过的 JPEG」有效,图被转发过一次基本就没参考价值了。所以网上那些「一张图证明某人 P 图」的分析,可信度取决于它拿到的到底是不是原文件,而不是分析技术多高明。

平台压缩:为什么你发的图一到别人手里信息就没了

图片

顺着这条线往下想,就明白为什么朋友圈、微信、微博上的图几乎全是「无信息」状态。平台重新编码的首要原因是省带宽,不是为了保护你隐私——这个我觉得有必要说清楚,因为很多人误以为是。微信聊天发图默认会压缩,长边通常压到 1280 像素上下,画质大概七八十,勾选原图才保留更多细节;微博、小红书这类也会做二次编码,EXIF 里 GPS、机型、拍摄时间基本清空。

实测下来,一张 iPhone 拍的 4032×3024 的 HEIC 原图大概 3–4MB,经过一轮社交平台压缩后可能只剩 200–400KB,尺寸掉到 1280×960 左右。像素少了七成,色度子采样从更精细变成 4:2:0(色度分辨率只有亮度的四分之一),EXIF 剩下的通常只有两三行。所以当有人拿着这种图问我「能看出是哪台手机拍的吗」,我一般先问:你手上这张是原文件,还是从聊天记录里存的?这个问题的答案,比任何分析工具都重要。

图片

AI 生成图把这三层的关系彻底搞乱了

AI 图让整个逻辑变得更拧巴。扩散模型生成的图片,元数据往往干净得可疑——没有相机型号、没有镜头、没有 GPS、没有拍摄时间,IFD 结构里空荡荡的,跟真实设备出图的字段分布完全不是一个样子。所以「元数据缺失」本身已经成了一个弱信号。Adobe 牵头的 C2PA 内容凭证想解决这事,思路是把来源信息写成密码学签名,Leica、索尼、尼康的部分机型已经支持,谷歌的 SynthID 走的是另一条路,直接把水印嵌进像素,属于隐写,截图重压缩后仍有较大概率被检出。Meta 在自己的生成模型里也用类似方案。

问题是这些方案互不通用,平台认不认也是另一回事。我的判断是:短期内「图片是不是 AI 生成」这件事,没法靠单一指标下结论,只能多线索叠加——元数据是否合理、像素噪声是否符合传感器规律、有没有内容凭证、降采样后水印是否还在。任何声称「一键识别 AI 图」的工具,准确率都别信太高。

图片

三步自查,我自己常用的流程

第一步,先确认文件身份。看扩展名和实际格式是否一致(改后缀很常见),用 exiftool 或系统自带的属性面板读一遍,重点看 Make、Model、DateTimeOriginal、GPS 这几项有没有,以及彼此是否自洽。第二步,看有没有被重编码过。把 JPEG 的量化表导出来对比常见软件的默认表,或者看缩略图跟主图内容是否一致。第三步,才轮到肉眼看画面,检查光影方向、反射、边缘融合、文字扭曲——这步是人最擅长但机器最容易翻车的部分。

顺序千万别反。先看画面得出结论,再去找证据,最后很容易变成「我觉得它是假的,所以这些痕迹都是证据」。这三层信息里,语义层最不可靠,恰恰也是我们最先接触到的,这大概就是为什么大部分人查图片信息,从来查不到点上。

标签: