GIF 里根本没有 EXIF 可找。

把 GIF 拖到下面。它能携带的东西是很短的一份清单,而多数文件一样都没有。

这个格式比问题本身还早

GIF 在 1989 年就定稿了,那时数码相机还不是消费品,距离有人制定 EXIF 也还有好些年。它的设计里没有任何部分是用来记录「谁拍的」「在哪拍的」,后来的修订也从未加进去。GIF 装不下相机、镜头、拍摄时间或坐标——不是因为被删掉了,而是因为从来就没有地方放。

那它能装什么

两样东西。注释扩展块装纯文本,编码器有时用它写水印或工具名。应用扩展块装 11 个字节的标识符,后面跟着那个应用想放的任何内容——Netscape 2.0 块就是这样存放让动画循环播放的循环次数的,而某些工具坚持要给 GIF 写 XMP 时,也是从这里塞进去的。

色彩是一张表,不是一份配置文件

GIF 最多挑 256 种颜色,把它们列在一张色彩表里,可以是全局的也可以逐帧的。它没有 ICC 配置文件,也没有地方放,所以同一个文件在两块屏幕上可能看起来不一样,而文件里没有任何东西能纠正这一点。这也解释了照片类 GIF 上那些抖动噪点:图像被硬塞进了这么小的一张表里。

GIF 的结构

GIF 以文件头和一段画布描述开头,然后重复一串块——一帧图像、为它计时的扩展块、以及编码器留下的任何注释——直到结束符终止文件。
文件头逻辑屏幕描述符全局色彩表数据块与扩展块注释扩展块应用扩展块图形控制扩展块图像数据结束符
  • 结构
  • 可以存放元数据
  • 图像本身

GIF 把东西放在哪里

文件头
GIF87a 或 GIF89a。扩展块只存在于 89a。
逻辑屏幕描述符
画布尺寸,以及后面是否跟着全局色彩表。
全局色彩表
整个文件最多 256 种颜色。
注释扩展块
纯文本。这是 GIF 最接近元数据的东西。
应用扩展块
一个标识符加它的数据。循环次数在这里,XMP 存在时也在这里。
图形控制扩展块
帧延时、透明和处置方式。每帧一个。

关于 GIF

GIF 里有 EXIF 或 GPS 数据吗?展开

没有。这个格式没有任何结构能装下它们,从来都没有。如果你想知道一张图会不会暴露行踪,GIF 是唯一一个答案可以提前确定的格式。

那还有什么可检查的?展开

文件结构——画布尺寸、色彩表、帧数和时序——以及编码器可能留下的注释块或应用扩展块。标签表显示的是实际存在的东西,而不是一个空的 EXIF 区块。

为什么清理 GIF 会得到 PNG?展开

因为重编码清理是在画布上重绘图像,而画布只保留一帧,并以 PNG 无损写出。你会得到那一帧的精确像素,但动画不会保留。

GIF 能看出是什么软件做的吗?展开

有时能,通过注释块或应用扩展块。但 GIF 在互联网上流转时被反复重新编码,第一个编码器写下的东西,通常早就被后来的某一个丢掉了。

能做什么

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