照片里藏着拍摄地点:10 种存法,只有 4 种会把它带出去

经验 2026-10-27 20:03 · 23 次阅读 ·隐私,图片,EXIF

照片带不带拍摄地点,不看画面有没有打码,看你是怎么存的那一份。

同一张照片 10 种存法,定位还在不在

背景

手机按下快门的时候,除了画面,还会往文件里写一段文字:手机型号、机身序列号、拍摄时间、当时站在哪个经纬度。

这段文字叫 EXIF(拍摄信息,藏在图片文件里的一小段记录,看图软件平时不显示)。

它像快递箱外贴的运单:箱子里是画面,运单上写着谁寄的、什么时候寄的、从哪儿寄的。

我手上没有一张真带定位的手机原图,所以照手机拍照的格式,给自己一张壁纸写了一份进去。字节是真的,读法也是真的。

然后拿这张 970,505 字节的图,用 10 种常见办法各存一份,看坐标还在不在。

实测

10 种里 4 种把定位带走了,6 种弄丢了。

带走的那 4 种,共同点是文件里的拍摄信息被原样搬了过去。直接复制最干脆,一个字节都不改。另外 3 种是我处理时主动勾了「带上拍摄信息」。

不勾的时候,PIL(常用的图片处理库)默认不搬这段;ffmpeg(转码工具)重新编码也不搬;浏览器里把图画到画布上再导出,同样不搬。

这 4 份带信息的,机身序列号是同一串。别人拿到两张图,一比就知道出自同一台手机。

那段信息一共 4,407 字节,占原文件 0.45%。拿 801,398 和 805,805 这两份对比就清楚:压缩质量一样,差的就是这 4,407 字节。

涂黑、裁掉,都拦不住它

这处我没预料到。拍摄信息里还夹着一张 74×160 的小预览图,3,999 字节,占那 4,407 的九成。

我把主图下半部分裁掉了,拍摄信息照原样带上。打开那张小预览图,下半部分一帧没少,还是完整的原画面。

逐像素比过:小预览图和原图平均差 5.55,和裁过的图平均差 59.16。前者是压缩噪点,后者是真的换了内容。

道理不复杂。小预览图是按下快门那一刻生成的,之后主图怎么修、怎么裁,都碰不到它。所以涂黑、打码、裁掉之前,先把拍摄信息清掉,不然等于白干。

自己怎么查、怎么清

查有没有:手机相册点开照片看「详细信息」,里面出现位置或者地图,就是带着。

电脑上看原始数据,装了 Python 一行就够:

python3 -c "from PIL import Image;e=Image.open('照片.jpg').getexif();print(dict(e.get_ifd(0x8825)))"

我这张跑出来是 {1: 'N', 2: (39.0, 54.0, 26.8), 3: 'E', ...},北纬 39 度 54 分、东经 116 度 28 分,北京城里随便一个路口。

清掉最省事:另存一份、不勾带原信息,或者干脆转 PNG、截个图。上面丢定位的 6 种都行,代价是画质或者体积。我这图按 90 的质量另存后 926,109 字节,拍摄信息从 4,407 字节变成 0。

只想删坐标、留着拍摄时间和型号也行:把定位那一块抹掉,别的照旧,文件 970,321 字节。

结论与踩坑

  • 复制文件等于原样搬走,改都不改,别指望它顺手清掉。
  • 「另存」不等于「清干净」,有的软件很体贴,会把信息一起带过去。
  • 先清信息再做涂黑打码,顺序反了会被小预览图还回来。
  • 微信、抖音这类平台到底剥不剥,我在这台机器上测不了,不替它们保证。要发原图就自己先清一遍。

下次发图前我只确认两件事:图里有没有坐标,里面有没有那张 74×160 的小图。

继续看

全部 →