你发群里的照片可能带着家庭住址:EXIF 隐私清理
家长群里有人晒娃,你随手拍了一张客厅窗外的街景原图丢进去。三分钟后一位邻居私信你:「你这是 X 小区 X 栋吧?」你以为只是对方眼熟这条路,其实照片自己把答案写在了文件里,坐标精确到几米,回头一查就是门牌号。
这不是都市传说。手机拍的 JPG 照片里默认会嵌一段叫 EXIF 的元数据,拍摄时间、设备型号、相机参数都在里面,如果拍照时位置权限开着,还会有 GPS 坐标。问题不在于有没有这段数据,而在于哪些渠道会把它原样带出去。
EXIF 里到底有什么
EXIF(Exchangeable Image File Format)是嵌在图片文件头里的一组结构化信息,主要给相册软件和后期工具用。一张手机拍的 JPG 通常包含:
- 拍摄日期和时间(精确到秒)
- 设备品牌和型号,比如
Apple iPhone 14 Pro、Xiaomi 13 Ultra - 镜头、光圈、快门速度、ISO、焦距
- 方向传感器(横拍还是竖拍)
- 软件版本,某些机型还会写上设备序列号
- GPS 经纬度和海拔(仅当拍照时授予了位置权限)
前面几项一般无害,你愿意分享拍摄参数给别人学构图也挺好。麻烦的是最后那个 GPS。手机相册里翻一下,某张照片详情页能直接跳出地图定位,那就是 EXIF 在起作用。坐标精度通常在十米量级,配合地图软件一搜,小区和楼栋基本能对上。
哪些渠道会泄露,哪些会自动清理
这是最需要分清的一点。同样是「发照片」,不同平台处理方式天差地别。
会自动剥离 EXIF 的渠道:微信、QQ、微博、朋友圈、小红书、抖音这类主流社交平台。你在聊天框里发一张图,对方收到的几乎都是被服务端重新压缩编码过的缩略图,EXIF 早在上传环节就被吃掉了。这是平台做的隐私保护,默认开启,你不用做任何设置。
会原样带 EXIF 的渠道,也就是真正容易翻车的:
- 邮件附件发原图
- 网盘分享原图链接
- 某些 IM 的「原图模式」(微信、Telegram 等都有这个开关)
- 直接传文件到 GitHub issue、工单系统、论坛附件
- AirDrop、蓝牙对面传文件
- 二手交易把商品实拍原图发给买家
判断标准很简单:只要对方拿到的是原始 JPG 文件而不是被平台重新编码过的图,EXIF 就跟着一起过去了。群聊里发原图尤其要警惕,你以为发给的是几个熟人,截图和转发几手之后流向谁手里你管不了。
怎么清理:Canvas 重导出
清理 EXIF 的原理一句话能说清:把图片画到 Canvas 上,再用 canvas.toBlob 或 toDataURL 重新导出。重新编码时只会保留像素数据,不会带上原文件的元数据。这其实就是前面那些社交平台在服务端做的事,只不过搬到浏览器里跑。
核心代码大致这样:
const img = await loadImage(file) // 把原图解码成 Image 对象
const canvas = document.createElement('canvas')
canvas.width = img.naturalWidth
canvas.height = img.naturalHeight
canvas.getContext('2d').drawImage(img, 0, 0)
canvas.toBlob(
blob => saveAs(blob), // 拿到干净的新图
'image/jpeg',
0.92 // 质量,0 到 1
)
三行 API 的事,没必要装什么软件。代价也是有的:JPEG 是有损压缩,重导出会再压一次,画质会轻微下降。quality 参数越低越糊,0.92 左右肉眼几乎看不出差别,0.7 以下就能明显察觉到细节糊了。另一个副作用是文件体积通常会变小,因为重新编码时不会保留原图可能存在的多余数据。
PNG 走这套流程会丢透明通道,GIF 会丢动画,所以这招主要用在 JPG 上。手机照片本来就是 JPG,正好对口。
从源头关掉记录位置
如果你压根不想让照片里写 GPS,最干净的办法是在相机设置里关掉「记录位置」或「地理位置」。iOS 在「设置 - 隐私与安全性 - 定位服务 - 相机」里设为「永不」,Android 各家路径略有差异,但都能在相机应用的设置里找到对应开关。关掉之后拍的片,EXIF 里就只有拍摄参数,没有坐标。
代价是相册里的「回忆地图」「那年今日」之类功能会少一块素材。自己权衡。
实操:发图前先看一眼
担心手头某张照片带没带 GPS,与其凭感觉猜,不如丢进 UPTools EXIF 查看清理工具 里过一遍。上传后能看到全部字段,GPS 之类的敏感信息会高亮提示,确认有就点一下清除按钮重新下载。整张图都在浏览器本地处理,不会上传到任何服务器,正好和这事的初衷对得上。
三句话总结
EXIF 是嵌在 JPG 里的元数据,带着拍摄时间、设备型号,开位置权限时还会写 GPS 坐标。微信微博这类主流平台会自动剥离,但邮件原图、网盘原图、IM 的原图模式会原样带出去。清理办法是 Canvas 重导出,重新编码自然丢弃元数据,想一劳永逸就在相机设置里关掉记录位置。
相关文章