PNG 把元数据藏在别处。

把 PNG 拖到下面。它携带的信息在一个个命名的块里,而不是大家以为的那个 EXIF 块。

PNG 里根本没有 EXIF 段

一个 PNG 是文件签名后面跟着一连串命名的块,每块有长度、类型和校验和。这套结构里没有任何东西对应 JPEG 的 APP1 段。文本存在 tEXt(Latin-1)、zTXt(同样内容但压缩过)和 iTXt(UTF-8)里——每一条都是一个关键字加一个值,所以 PNG 可以带着 Software、Comment 和 Author,用的是某个编辑器自己取的名字,而不是标准的标签号。

新一点的 PNG 其实也能带 EXIF

2017 年修订的规范加入了 eXIf 块,里面是一个货真价实的 EXIF 块,GPS 也在内。这并不常见——截图和大多数编辑器的导出都不会写——但从相机流程另存为 PNG 的照片可能有。这正是 PNG 会让人意外的地方:下方的标签表把 PNG 文件结构、PNG 文本和 PNG 块分开归组,所以你能看出某个值究竟来自三者中的哪一个。

截图带着什么,不带什么

截图没有相机、没有镜头、也没有位置,因为它不是拍出来的。它可能带的是:生成它的工具、tIME 块里的创建时间,以及色彩处理信息——gAMA、cHRM、sRGB,或 iCCP 里一份完整的 ICC 配置文件。如果你担心的是截图会不会暴露你的机器,老实说,它通常只暴露了软件。

PNG 的结构

PNG 是一串按顺序读下来的块。签名、IHDR 和 IEND 的位置是固定的;能存放文本或色彩配置文件的那些块夹在中间,先后顺序由写入它的编码器决定。iCCP 必须排在图像数据之前。文本块不必,它可以出现在 IDAT 之后,而不是图中画的之前。
PNG 签名IHDR辅助块iCCPtEXtzTXtiTXteXIftIMEIDATIEND
  • 结构
  • 可以存放元数据
  • 图像本身

PNG 把东西放在哪里

tEXt
关键字加值,Latin-1。Software、Comment、Author。
zTXt
同上,但压缩过。
iTXt
UTF-8 文本,XMP 存在时也在这里。
eXIf
真正的 EXIF 块。2017 年规范加入,不常见。
tIME
图像最后一次修改的时间。
iCCP
嵌入的 ICC 色彩配置文件。
IHDR
宽、高、位深、颜色类型。这是结构,不是元数据。

关于 PNG

PNG 有 EXIF 数据吗?展开

通常没有。PNG 把元数据放在文本块里放了二十年,直到 2017 年才有官方的 eXIf 块。你日常遇到的 PNG——截图、导出图、网页图片——带的是文本块和色彩信息,完全没有 EXIF。

PNG 里可能有 GPS 坐标吗?展开

只有通过 eXIf 块才可能,而这在实际中很罕见。如果一个 PNG 带位置信息,它会出现在标签表的 EXIF 分组下,而不是 PNG 文本分组下。

这里怎么去掉 PNG 的元数据?展开

通过重编码清理:重绘图像后仍以 PNG 写回。因为 PNG 是无损的,像素进去什么样出来还是什么样——只有那些块被丢掉了,色彩配置文件也一起。

为什么我的 PNG 里有个我不认识的 Software 名字?展开

因为 tEXt 的关键字是自由的,每个工具都写自己的。截图工具、导出流程、压缩优化器可能各加一条,而它们谁也没有义务删掉前一条。

能做什么

删除 EXIF 数据
拖入一张照片,下载一份去掉嵌入元数据的副本。JPEG 无损删除 EXIF 段;HEIC、PNG、WebP 等格式通过重编码去除。文件不会上传。
删除 GPS 位置
先看清照片带着哪组坐标,再下载一份不含坐标的副本。JPEG 只去掉位置标签,其余信息原样保留。文件不会上传。
编辑 JPEG EXIF
修改 JPEG 的标题、作者、描述、版权、软件和拍摄时间,然后下载编辑后的副本。全部在本地完成,原文件不会被改动。
XMP、IPTC 与 ICC 查看
读取文件携带的每一个元数据分组 —— EXIF、XMP、IPTC、ICC、厂商备注 —— 分组呈现并可导出为 JSON。适用于素材质检、取证和排查处理流程。文件不会上传。
打开多张照片
一次打开最多五十张照片,看清哪些带有位置信息,并把整批导出成表格。全程不上传,原文件也从不被写入。