先说结论
打开 EXIF 查看与清除即可清理照片元数据。JPEG、PNG 和 WebP 保留原有压缩图片数据。AVIF 清理会从第一张解码后的图片生成新的 PNG,不复制原有元数据。方向和色彩配置文件选项仅适用于这三种容器格式。 AVIF 由浏览器解码并保存为新的 PNG,不复制原有元数据。这里可以查看提取到的 EXIF 标签,但无法编辑。PNG 可能更大,转换也可能改变颜色或 HDR 显示。原文件保持不变。
动手之前,值得先看看里面本来有什么。那通常比人们以为的多,而那份清单本身,就是干这件事的理由。
一张照片里到底装着什么
JPEG 不只是一张压缩过的画面。它是个容器,画面旁边还坐着好几块信息,是你的相机、手机或者修图软件写进去的。
- EXIF。最主要的那一块。相机厂牌和型号、镜头、曝光参数、ISO、精确到秒的日期时间、显示时该转成什么方向,而在一部给相机开着定位的手机上,还有精确到几米的 GPS 位置。相机机身序列号也常常在里面。
- GPS。严格说是 EXIF 的一部分,值得单拎出来说,因为它是最要命的那一条。它按度分秒记录,而这种写法有一个突出的本事:看着一点也不像一个地址。
- XMP。修图软件写进去的一段 XML。里面可以有你的名字、你用的软件、评级、关键词、编辑历史,还有一份 EXIF 若干字段的副本,所以只清 EXIF 是不够的。
- IPTC。更老的一块,装的是图说、署名、来源和版权这些字段,新闻界和图库一直在用。
- 内嵌缩略图。画面的一份小副本。它在写文件时生成,而画面被编辑之后,它未必会跟着重新生成,所以一张裁过的照片,可能带着一张显示着被裁掉部分的缩略图到处走。
- maker note。厂商自己那块没有公开文档的数据。除了厂商,没人清楚里面到底装了些什么。
实际上谁看得到
这一节值得说准,因为“吓死人”和“无所谓”这两个版本都不对。
大的社交网络在你发帖时多半会清掉元数据。Facebook、Instagram 和 X 会把上传的图片重新编码,标签在这一步顺带没了。这不是出于好心,数据他们自己留着,但确实意味着发到这些平台上的照片,不会把坐标交给每一个看到它的人。
除此之外,几乎所有地方都原样保留。邮件附件。多数聊天软件里以“文件”而不是“照片”发出去的图。论坛上的图、二手交易的商品图、个人网站、共享盘、缺陷报告、工单。这些地方文件都是完整到达的,任何人下载下来,用操作系统自带的工具就能读出那些标签。
现实中的风险都很日常,不戏剧化:在家里拍的二手商品图、在学校门口拍的孩子、一个看似匿名的账号发的照片全都共用同一个相机序列号、一句“上周拍的”其实是三月拍的。
为什么不干脆另存一遍?
图像编辑器或压缩工具通过解码并重新编码图片来去除元数据。有损编码可能降低画质。无损 PNG 可以避免再次有损压缩,但浏览器解码仍可能改变颜色或 HDR。
对于 JPEG、PNG 和 WebP: 而正经地清元数据,一分钱代价都没有。那些标签坐在压缩画面外面的容器里,不在画面里,所以清它们就是从一张清单上划掉几项再把清单写回去。压缩后的图像数据逐字节抄过去,结果解码出来的像素跟原来一模一样。这就是该用元数据工具、而不是用转换器的全部理由。
例外是你本来就要重新编码。要是你正打算压缩或者缩放这张照片,那些标签会顺带消失,用不着再多走一步。
有一样该留下:方向
你把手机转过来,手机并不会把画面转过来。它按传感器看到的样子记录,另外加一个方向标签,说明显示时该怎么转。把所有标签一清,有些看图软件就会把你的照片横着显示。
对于 JPEG、PNG 和 WebP,保留方向选项会在需要时写入仅含方向标签的小型 EXIF 块。关闭此选项即可去除。AVIF 清理使用浏览器按正确方向解码的图片生成 PNG。方向和色彩配置文件选项仅适用于 JPEG、PNG 和 WebP。
你要是宁可文件里一点 EXIF 都不剩,那就把它关掉,然后在发出去之前先看一眼结果,因为通常等着你的就是一张躺倒的照片。
改,而不是删
对多数人来说,全清就是对的答案。有时候不是:摄影师可能想留下版权信息和拍摄参数,只把位置去掉;做档案的人可能得订正一个日期,因为当初相机的时钟就是错的。
对于 JPEG、PNG 和 WebP: 两件事都办得到。位置可以单独删掉,文字类标签、日期、ISO、方向和分辨率都能就地修改。
有一条提醒对所有做这件事的工具都成立,不只这一个:写文件会重建整个 EXIF 块,而 maker note 里存的是指向原来那个块的偏移量。所以重建之后的 maker note,厂商自己的软件可能就读不出来了。你要是在意这个,那就把 maker note 删掉,或者干脆不改这个文件。
支持的格式,以及不能这么办的那些
JPEG、PNG 和 WebP 支持查看、编辑元数据以及容器内清理。AVIF 支持预览提取到的 EXIF,并转换为新的 PNG 来清理。AVIF 标签只读,其他元数据不会列出。动画 AVIF 仅使用第一张图片。HEIC 和独立 TIFF 可以识别,但不会重写。
iPhone 常保存的 HEIC 使用另一种编解码器,此元数据工具可以识别,但不接受。转换为 JPEG 时,请选择删除元数据。
裸 TIFF 也不做,理由还更有意思些:在 TIFF 里,元数据和像素数据用的是同一套偏移量,所以删标签就意味着把画面自己的寻址也重写一遍。这事能做,但那是另一件活。
一个值得养成的习惯
发之前查,别发完了才查。读那些标签只要几秒钟,而在列出全部标签之前,那份“值得知道”的清单已经把位置、时间戳、序列号这些点出来了,所以你不必事先知道该找什么。
位置先按十进制度显示,这是故意的。“北纬 51 度 30 分 26 秒”看不出这张照片其实点名了它是在哪栋楼里拍的;而一对能直接粘进地图的小数,看得出来。
别为了搞清里面有什么,先把照片传上去
这个问题惯常的解决方式里有一层特别的讽刺:一个人担心自己的照片泄露了什么,于是把它传到一个网站上去查。现在这个网站手里有了照片、坐标、时间戳和序列号,还有一份存在他们自己硬盘上的画面副本。
根本没这个必要。读取和重写 JPEG 外面那层容器,也就几百行解析代码,浏览器跑得好好的,所以这里的工具压根没有联网功能:没有 fetch,没有 XMLHttpRequest,就算有什么东西想发文件,也没有路子可走。开一次页面,断网,它照干不误。
这个说法怎么在本站或者别处核实,把文件传给在线转换器安全吗?里写了,而在所有文件类型里,最值得核实的就是这一类。