删除元数据

清除照片中的 EXIF、GPS 位置、相机信息和时间戳。在删除之前先准确查看嵌入了哪些信息。

点击选择一张图片,或将其拖放到此处

JPG 格式最适合读取现有元数据。同样支持 PNG/WebP。文件保留在你的设备上。

生成后,清理后的图片会显示在这里。

手机和相机拍摄的照片通常会嵌入 EXIF 数据:拍摄时的精确 GPS 坐标、相机或手机型号,以及时间戳。该工具会先读取你文件中实际存在的信息,然后通过从头重新编码图片来清除所有这些数据。

工作原理

当你拖入一张 JPEG 图片时,工具会用 DataView 读取文件的原始字节,并遍历 JPEG 标记结构以寻找 APP1 分段,EXIF 数据就存放在那里。在其内部,工具会解析 TIFF 目录树:IFD0(相机品牌和型号、软件、修改日期)、Exif 子目录(原始拍摄时间、曝光、光圈、ISO),以及 GPS 子目录。它可以处理两种字节序(Intel 和 Motorola 风格的文件)以及内联和偏移存储两种值的方式,然后在你确认操作之前,向你展示一份找到内容的清晰列表。

这份列表正是关键所在:大多数人从未见过一张手机照片中都携带了哪些信息。一张典型的 JPEG 照片会携带确切的设备型号、快门按下的具体秒数、使用的编辑软件,以及——如果开启了定位——精确到足以识别某栋房子的 GPS 坐标。发布一张原始照片,也就等于把这一切都一并发布了出去。

清理步骤简单粗暴,效果极佳。图片会被绘制到一个全新的 <canvas> 上,并通过 canvas.toBlob() 重新导出,按设计该方法只写入像素数据:EXIF、XMP、ICC 配置文件、缩略图,这一切在新文件中根本没有存放的地方。没有任何内容是被选择性删除的,因此也不会有遗漏。唯一的取舍是 JPEG 会被重新编码(质量为 0.95,在照片上视觉上几乎无法察觉差异),并且自定义颜色配置文件会被丢弃。PNG 和 WebP 文件很少携带 EXIF,但可能包含文本块和配置文件;同样的重绘过程也会一并清除这些内容。

字节级检查和 canvas 重新编码都在你的标签页中运行。在加载和清理照片时打开开发者工具的 Network 面板看看:图片从未被上传到任何地方,而这正是一个专门用于保护你元数据的工具所应该做到的。