照片EXIF信息怎么查看、怎么彻底删干净?我把200张图拆到字节级,发现3个没人提的坑

关键词:EXIF,图片元数据,照片位置信息,exiftool,图片隐私

摘要:从二手交易纠纷里那张带GPS坐标和残留缩略图的商品照说起,把一张JPEG里的四层信息拆开讲清楚:EXIF、IPTC/XMP、IFD1缩略图、像素层指纹。附各平台处理规则对比表、4种查看方式、3个删除时必踩的坑,以及C2PA和SynthID为什么会让图片信息从负债变成资产。

照片EXIF信息怎么查看、怎么彻底删干净?我把200张图拆到字节级,发现3个没人提的坑

图片

上个月帮朋友处理一个二手交易纠纷。对方发来一张"商品实物照",说是自己家拍的。我没干别的,把图丢进 ExifTool 跑了一遍,出来一串坐标,小数点后 6 位,够定位到单元楼门口。更尴尬的是,那张图里还留着一个 8KB 的缩略图——缩略图里是这个商品被拆开的另一面,正图里用 Photoshop 裁掉了。

这事之后我把手上攒的 200 多张图全跑了一遍:微信收的、相机拍的、手机截的、网页另存的。结论是:大部分人理解的"图片信息"停在"把 GPS 关掉就行",但真正出事的地方,基本不在 GPS 上。

下面按我能查证的顺序讲。

一、一张 JPEG 里的信息是四层,不是一层

很多人把"图片信息"直接等同于 EXIF,这个理解不够用。

图片

第一层,EXIF。 日本 JEITA 定的标准,当前版本 EXIF 2.32(对应 CIPA DC-008,2019 年 5 月发布),上一版 2.31 是 2016 年 7 月。它把数据拆成 IFD:IFD0 放设备信息(Make 0x010F、Model 0x0110、Software 0x0131),Exif IFD 放拍摄参数(DateTimeOriginal 0x9003、FNumber 0x829D、ExposureTime 0x829A),GPS IFD 放位置(GPSLatitude、GPSLatitudeRef、GPSAltitude、GPSTimeStamp,大约 30 个标签),IFD1 放缩略图。

第二层,IPTC 和 XMP。 IPTC IIM 是老新闻行业标准,XMP 是 Adobe 2001 年推的,说白了就是一段 XML 塞在 JPEG 的 APP1 段里。创作者名、标题、版权声明,甚至 Lightroom 的调色记录都在这一层。你从图库下载的图片,作者名往往就在这。

第三层,缩略图。 IFD1 里的 JPEGInterchangeFormat(0x0201)指向一个独立压缩的小图,通常 8–20KB。它跟你现在看到的画面可以完全不一样,因为很多软件重写主图但不重写缩略图。

第四层,像素本身。 这一层不需要读任何标签。JPEG 的量化表能反推压缩软件和质量档位,Adobe 系列保存的图会在 Software 里直接写自己名字;再往深了说,CMOS 的传感器噪声可以当指纹用(学术界叫 PRNU,2010 年前后那批论文就是在做这个),同一台相机拍的片子,噪声模式是一致的。这层删标签删不掉。

二、各平台到底会不会帮你擦掉?我列了张表

图片

平台 以原图/文件方式发 以压缩图片方式发 备注
微信 保留 EXIF,含 GPS 重编码,多数标签丢失 版本间有差异,建议自测
Telegram 完整保留,连 MakerNotes 都在 压缩并剥离 "以文件发送"是重灾区
微博 / 小红书 —— 上传后剥离 EXIF 和 XMP 只影响上传的那份
X / Facebook / Instagram —— 服务端重编码,剥离 本地原图不受影响
手机截图 iOS 截图会写设备型号和系统版本 一般不带 GPS 部分安卓会写入 DPI

微信那条得展开说。它分两种发法:点"原图"时 EXIF 会跟着走,腾讯 2019 年公开回应过这事;发普通图片会被重编码,大多数标签会掉。但微信改过好几轮了,别信任何一篇固定的攻略,自己测最靠谱——找张带 GPS 的图,发给自己的文件传输助手,"原图"和"非原图"各发一次,下载到电脑跑 exiftool -gps:all -a -g1 xxx.jpg。另外,用"文件"方式发(不是"图片")的一定完整保留,包括 GPS。

三、四种查法,从最土到最狠

  1. Windows:右键图片 → 属性 → 详细信息。能看到相机型号、光圈、快门、ISO、拍摄时间,GPS 那一栏在,但不一定显示出来。
  2. macOS:访达选中按 ⌘I 看"更多信息",那个不全。要看得用"预览"打开,再按 ⌘I 打开"显示检查器",GPS 会直接带地图出来。
  3. 手机:iOS 在照片 App 里点 ⓘ 或上滑;安卓看相册的"详情",但很多国产 ROM 把位置那块藏了或者干脆不显示。
  4. 命令行(最全)exiftool -a -u -g1 photo.jpg-a 显示重复标签,-u 显示未知标签,-g1 按组分类。只查位置相关的话用 exiftool -a -g1 -gps:all -xmp:all -iptc:all photo.jpg

ExifTool 是 Phil Harvey 一个人维护的,从 2003 年做到现在,免费。不想装命令行工具的话,Python 也行:from PIL import Image; img = Image.open('x.jpg'); img.getexif(),注意旧教程里写的 _getexif() 是私有方法,别用了。

图片

四、删除的时候有三个坑等着你

坑一:exiftool -all= 是核弹,不是手术刀。

网上到处在传这条命令,exiftool -all= -overwrite_original photo.jpg。它删掉的不只是 GPS,还有 ICC 色彩配置文件(挂在 JPEG 的 APP2 段,通常 1–4KB)和 Orientation(0x0112)。ICC 没了,Adobe RGB 拍的图在 sRGB 环境里会发灰、发闷,肤色偏;Orientation 没了,竖着拍的照片在某些看图软件和网页里会横过来——因为像素数据本身是按传感器方向存的,软件全靠这个标签转。你以为"删完之后画质变差了",其实是色彩配置丢了。

正确做法是按组删:exiftool -gps:all= -xmp:all= -iptc:all= -overwrite_original photo.jpg

坑二:缩略图不跟着走。

图片

用 Photoshop 或某些修图 App"另存为"的时候,IFD1 里那个缩略图可能是修改前的版本。你可能用画笔涂掉了一个车牌,缩略图里还清清楚楚。单独检查:exiftool -b -ThumbnailImage photo.jpg > thumb.jpg,然后用眼睛看一眼。删它:exiftool -ThumbnailImage= -overwrite_original photo.jpg

坑三:伴生文件。

iPhone 的 Live Photo 是一个 .HEIC 加一个 .MOV,位置信息两边都有。你只处理了 HEIC,MOV 里的 GPS 还在。相机拍 RAW+JPEG 同理,是两个文件。

顺带说一句,HEIC、WebP、PNG 都有元数据。PNG 从 2017 年规范第三版起有正式的 eXIf chunk,WebP 有 EXIF 和 XMP chunk。别以为"我发的是 PNG 所以安全"。

五、接下来,图片信息的方向是反过来的

图片

过去十年,图片信息是负债,你得想办法删干净。接下来几年它会变成资产。

C2PA(内容来源与真实性联盟)2021 年由 Adobe、微软、BBC、Truepic 等牵头成立,干的事就是往图片里塞一段密码学签名的出身证明。徕卡 M11-P(2023 年 10 月发布)是第一台从传感器出来就带 Content Credentials 的相机,索尼、尼康也在靠固件跟上。Google DeepMind 2023 年发的 SynthID 是同一思路,只不过它把水印写进像素本身,不写在标签里——你截图、压缩、改尺寸,它都还在。

这两种东西的哲学完全相反。EXIF 是明文的、可编辑的、随手能删的;C2PA 是签名的,改一个字节就验签失败;SynthID 更狠,它压根不在文件结构里。

我的判断:以后"这张图能不能用"会慢慢变成"这张图有没有签名",而"我这图会不会泄露位置"的答案,光关掉相机定位不够,得养成出口检查的习惯。我现在的流程就两步——拍完不管,发给外人之前跑一遍 exiftool -gps:all= -xmp:all= -overwrite_original,然后 exiftool -gps:all -a -g1 确认干净了再发。听着麻烦,实际上一张图两秒钟。

最后补一句:那个二手纠纷的缩略图里确实有个被拆开的机箱,朋友没买。

标签: