你知道吗,看图的时候,大部分人只盯着像素看,好像那些花花绿绿的光点就是全部。 其实一张图片更像是一个硬盘,除了画面本身,还塞满了拍摄设备、地理位置、编辑痕迹、甚至是隐藏文件。 我习惯把手机里的照片拖进exiftool看一眼,有一次发现我饭后随手拍的一张照片里,EXIF字段超过15项,GPS精度显示到小数点后7位,换算下来误差不超过3米。 我人在哪、哪家店、几点几分,全在文件里摆着。 而你看到的只是一碗面,仅此而已。
图像信息爱好者总是喜欢争论清晰度,好像分辨率越高,图片就越有用。 但我的观点是,视觉清晰度只是冰山一角;一张1200万像素的JPEG,视觉信息大概只占了文件体积的一部分。 用JPEGsnoop查看照片的量化表,你会发现相机默认使用了4:2:0的色度抽样,意思是对色度信息只保存一半甚至更少,而亮度表几乎无损。 这正是因为人眼对亮度敏感、对颜色迟钝,编码算法才故意把看不见的部分丢掉。 反过来想,一张图片真正的信息量,反而不在画面上,而在你看不到的那些字节里;它用什么手机拍的、镜头光圈是不是f/1.8、快门速度是1/125秒还是1/1000秒,这些参数比照片里的主体更能说明拍摄者的意图。
但是图片的隐藏信息不止于EXIF;有一门手艺叫隐写术,专门把秘密塞进图像中。 常见做法是修改像素值的最低位,也就是LSB。比如一张4000×3000的BMP位图,拥有1200万个像素。 如果每个像素的RGB各占8位,你只改动每个通道的最低位,那么有1200万×3bit的容量,算下来大概是4.5MB,足够藏一个明确的小文件进去。 问题是这种隐写扛不住有损压缩,JPEG的DCT变换会直接搅乱最低位。 于是我总跟朋友说,PNG和JPG之间,藏私房钱只能选PNG,选JPEG相当于主动洗掉了墨迹;图片格式本身就是一场信息博弈,无损格式什么都留,有损格式以符合人类眼睛为由丢东西。
还有更邪门的地方:很多相机直出的JPEG在EXIF中嵌了一个原图缩略图。 删除照片主体,缩略图还在;就算用PS另存为,也常被保留下来,缩略图藏在EXIF的Thumbnail字段里,用exiftool -a -u -g1可以提取出来,往往能还原半张图。 这就是为什么图片被裁掉一小块不代表信息真的消失。 我记得当初想清理自己发到网上的徒步路线图,先试着去除GPS,结果发现文件里还有一串相机序列号,在MakerNote里面。 那些数据像指纹一样,删掉了EXIF也不一定在,因为不同厂商的private tags,比如佳能的字节偏移区域里记录着近三十种内部状态参数;老实说,我那时候才对原图两个字警惕起来。
所以,现在我看到有人补一句这是AI生成图时,我不看什么光影,也不看手指,我会直接看文件的元数据或噪声模式。 AI绘图工具写出的PNG往往没有相机参数,但生成器模型会在像素级留下特定频率的噪声分布。 以前我们靠肉眼分辨真相,可未来得靠统计、哈希和元数据。 图片的可见区域在说谎,而隐藏区域在透露;每张图片都有两层信息流,像素直接欺骗你的眼睛,字节悄悄记录这一切。 别再说有图有真相,原图都不一定有真相;相反,把所有可见内容都清掉后的图像残渣,才最诚实。