文章
分享照片时,它的元数据会发生什么
手机拍摄的照片带有嵌入的元数据:相机型号、时间戳,通常还有精确的 GPS 坐标,写入方式和所有遵循 Exif 标准的消费级相机和手机一样。这些数据接下来会发生什么,完全取决于照片是怎样传输出去的。聊天应用的相册选择器通常会为聊天窗口重新压缩图片,作为副作用会剥离掉嵌入的字段;同一个应用的“作为文件发送”选项,通常会原样交出原始字节。下面是这背后唯一的机制,适用于每一种渠道,以及如何检查某张具体照片实际发生了什么,而不是靠猜测。
所有渠道背后的同一种机制
像 Exif 这样的元数据,是嵌入在文件字节内部的,和像素处在同一个容器里。每当一个应用解码一张图片并重新编码它,比如为了适应聊天气泡而调整尺寸、为了适配信息流而压缩、或者转换成另一种格式,它构建的都是一份全新的文件,除非这个过程显式地把元数据一并复制过去,否则新文件根本不会带有它。相反,发送或复制完全原始的字节则不会改变任何东西,因此原来嵌入的内容就会继续保留。下面描述的每一种渠道,都是这同一个分叉的某个版本:要么重新压缩,要么原样交出。

聊天应用:相册选择器与文件/文档发送方式的对比
大多数聊天应用都提供两种不同的发送图片方式,它们的行为差异正是源于上面这个原因。通过展示相册网格和预览图的普通相册选择器来选取照片,通常会把它重新压缩到适合聊天窗口的尺寸和画质,这个重新编码的步骤会丢掉嵌入的元数据。而选择把同一张图片作为文件或文档发送,则会跳过这个流程,原样传输原始字节,元数据也包含在内。同一张照片,作为文件发送时看起来更清晰、下载下来的文件也明显更大,而作为普通图片发送时则不然,这正是这种重新编码是否发生过的直接证据。
截图是从一块干净的画布开始的
截图并不是一张重新编码的照片,而是操作系统截屏流程创建出来的一张全新图像,它从未和任何相机连接过,因此从一开始就没有 Exif 的 GPS 字段或相机型号可以继承。截图究竟会带上什么,取决于操作系统:有些会在文件里写入截取时的时间戳或基本尺寸,但这些都和照片实际拍摄地点无关。这也是为什么有人建议截图一张照片而不是直接分享文件,以此在不带原始元数据的情况下传递图像,代价是多一次重新编码带来的画质损失。
公开信息流经历的也是同样的分叉
上传到公开信息流或故事的照片,通常会经过一条服务器端流程,生成平台实际提供的各种尺寸:缩略图、适配信息流宽度的版本,有时还有全分辨率下载版本,这条流程也是又一次重新编码,因此访客看到的副本通常已经被剥离了原始文件携带的元数据。这并不能说明平台自己的服务器上,从原始上传内容中保留了什么,只能说明陌生人从信息流中能下载到的那个版本里,最终嵌入了什么。

检查某张具体照片,而不是想当然
上面这些通用规律只是一个起点,而不是保证:应用的行为会因版本和具体使用的功能而不同,唯一能确定某个文件到底携带了什么的方法,就是亲自查看。我们的 EXIF 查看器会在本地打开图片,列出每一个嵌入的字段,包括 GPS,让你在发送照片之前先检查一遍。我们的 EXIF 移除工具会先从副本中剥离这些元数据,这样无论你之后使用哪个渠道,都没有敏感内容可以携带,不管那个渠道本来会不会剥离它。这两个工具都完全在你的浏览器中运行:你查看或清理的照片从不会被上传。
本文涉及的工具
常见问题
如果聊天应用会剥离元数据,我的位置信息就一定安全了吗?
不完全是。从图片文件中删除 Exif,只影响这个文件本身嵌入了什么,并不能说明应用或平台本身是否在自己的服务器上记录了你的账号、IP 地址或上传时间。元数据被剥离,只意味着图片本身不再携带坐标信息,并不代表这次发送是匿名的。
从手机上删除一张照片,能移除我已经发送出去的副本中的位置信息吗?
不能。一份副本离开你设备的那一刻,它当时携带的任何元数据,就已经成了另一份独立文件的一部分,无论它落在接收者的设备上、服务器上,还是别的什么地方。之后删除原始文件,对已经存在于其他地方的副本没有任何影响。
我怎样才能确定某张具体照片是否还带有 GPS 数据?
在 EXIF 查看器中打开它,直接查看 GPS 字段,而不是根据你用的应用或设置去猜测。行为会因应用版本和所选的发送方式不同而不同,所以唯一可靠的检查方式,是读取你即将发送的那份实际文件。