上周清硬盘,翻到 2019 年在一家咖啡馆随手拍的照片。顺手拖进 exiftool 瞄了一眼,前几行还是老熟人——相机型号、光圈、快门,看到 GPS 那两行我愣了一下:
GPS Position : 39 deg 54' 27.36″ North, 116 deg 28' 12.48″ East
GPS Altitude : 43.2 m Above Sea Level
GPS Date/Time : 2019:04:17 09:12:03Z
换算过来,是我当时住的那栋楼楼下,误差目测不超过 20 米。我不是没删过,我是从来没删过。照片从快门按下去那一刻,信息就写进去了:JPEG 文件里有一段叫 APP1 的区域,起始标记是 0xFFE1,紧跟一个 Exif 标识头。这段数据不参与显示,你在任何看图软件里都看不见它,但它跟着这张图走完了网盘、微信、U 盘、二手手机回收站的全过程。
Exif 不是厂商发明的黑魔法,它有公开标准,编号是 CIPA DC-008-2019(对应 JEITA CP-3451C),字段上百个。除了刚才那些,还有机身序列号、镜头序列号、白平衡、测光模式、图像方向,有的手机甚至会写进人脸检测框的数量。机身序列号这个东西尤其要命,它是能把人和一台机器绑定的字符串——你在闲鱼买二手,卖家发来的所谓实拍原图里,可能就带着他另一批货的机器序列号。
先说怎么查。 Windows 上右键图片 → 属性 → 详细信息,往下拉能看到大部分字段,注意有些项是折叠的,要点开。macOS 用「预览」打开 → ⌘I 调出检查器 → 点那个「i」标签页,再切到 GPS,会直接给你在地图上打点。想看得全一点,装 ExifTool,命令行敲 exiftool 文件名 就全出来了,参数加 -gps:all 只看位置,-a -u 连隐藏和未知字段一起显示,-G 会在每个字段前面标出它属于哪一组(EXIF、XMP、ICC 分开看,这点很实用,因为很多平台删了 EXIF 却在 XMP 里留了一手)。
再说怎么删。 三个层级的做法,按彻底程度排:Windows 是右键属性 → 详细信息 → 最下面「删除属性和个人信息」→ 选「从此文件中删除以下属性」→ 全选。macOS 用「预览」打开 → ⌘I → GPS 那一栏点「−」号,注意这只删位置,相机型号还在里面;要全删,就在导出时勾掉元数据,或者直接上命令行。命令行是最省事的:exiftool -all= photo.jpg 一刀切,想保留版权信息就加 --copyright(-all= --copyright photo.jpg),只想清坐标就 exiftool -gps:all= -xmp:geotag= photo.jpg。手机端:iOS 可以去 设置 → 隐私与安全性 → 定位服务 → 相机 → 选「永不」,以后拍的就不带坐标;已经拍了的,在相册里选中图片 → 分享 → 选项 → 关掉「位置」再发。安卓各家 UI 不一样,但基本都在相机设置的「保存位置信息」开关里,找不到就直接搜设置里的「位置」。
但现实里有个更省事的办法:让别人帮你删。 因为绝大多数平台在上传时会把图片重新编码,元数据在这个过程中就蒸发了。问题是,蒸发的程度各家差得很远。我在自己机器上(iOS 18.5 + 微信 8.0.56,截图对照 ExifTool 输出)拿同一张带 GPS 的照片轮着传了一遍,样本三张,不代表所有人的情况,但差别挺有意思:
| 平台 | 发送方式 | GPS | 相机型号 | 拍摄时间 |
|---|---|---|---|---|
| 微信聊天 | 勾选「原图」 | 保留 | 保留 | 保留 |
| 微信聊天 | 普通图片 | 没了 | 有时还在 | 没了 |
| 微信朋友圈 | 直接发 | 没了 | 基本保留 | 没了 |
| 微博 | 网页上传 | 没了 | 保留 | 变成发布时间 |
| 小红书 | App 发布 | 没了 | 没了 | 没了 |
| Telegram | 以「文件」发送 | 保留 | 保留 | 保留 |
| Telegram | 以图片发送 | 多数保留 | 保留 | 保留 |
| iMessage / 邮件附件 | 直接发 | 保留 | 保留 | 保留 |
同一张图,微信「原图」和 Telegram「文件」发出去,GPS 一丁点没少;走普通图片、丢微博、丢小红书,GPS 是没了,可相机型号经常还在。这个差别不是巧合,是编码参数决定的:微信普通图片会把 4032×3024 压到长边 1280 左右,一张 3.8MB 的变成 210KB 上下,这个过程用的是自家编码器,顺手把 APP1 段丢了——但它自己会往文件里塞新的东西,服务器生成的 XMP、上传时间戳、CDN 节点信息,有些平台还会塞用来追盗图的隐形水印。所以别把「平台帮我删了」当成隐私保护,你交出去一份信息,收回来一个被平台重新署名的文件。
这里说个我自己的看法,可能不太中听。大家聊图片信息,默认它是隐私问题,于是解法就是「删掉就好」。但真正在发生的事是信息主权在转移:平台一边帮你抹掉坐标,一边往文件里写自己的元数据。这意味着十年后你手里那张照片还算不算「原始文件」,可能得靠平台来证明;你拍的东西,可追溯性挂在别人的服务器上。这不是阴谋,是工程上顺理成章的结果,但它确实改变了「谁拥有这张图」这件事。我的习惯是,重要照片在本地留一份带完整 EXIF 的原始档(放加密盘),发出去的那份随便它怎么洗——原始档在我手上,主权就没丢。
反过来用也一样成立。如果你想搞清楚一张图从哪来,EXIF 只是第一层,而且经常被清得干干净净。第二层是像素本身:JPEG 量化表、传感器噪点分布、镜头暗角,这些很难伪造得很干净。第三层是感知哈希,pHash、dHash 这一类,把图缩到 32×32、转灰度、做 DCT 变换,最后算出一个 64 位指纹,重新编码、加水印、调亮度都很难动摇它,这也是很多图库查重的底层逻辑。实际操作上有个顺序建议:先用 ExifTool 或在线查看器看元数据,没有就转去 TinEye 找最早上传的出处,Yandex 认人脸和场景特别强,Google Lens 擅长认物,找国内社交平台的老图,百度识图的命中率反而比前几个高。别指望一次搜到,一张图换两三个引擎来回比对是常态。
最后提一句我踩过的坑:网上那些「在线 EXIF 查看器」,你把图传上去的那一刻,元数据连同画面一起进了别人的服务器,有些站还会把图留在 CDN 上。真要查,本地装个 ExifTool,一行命令的事,别偷那个懒。