修图后读不到 EXIF 怎么办
用 Lightroom、Photoshop 或脚本导出一张照片,拖进水印工具,机型和参数一个都读不出来,第一反应往往是画质被弄坏了。
多半是导出设置的问题:同一段代码只差一个保留元数据的参数,一边全丢,一边原样保留。
打开镜笺,免费试一张免费,不用注册,照片不上传。
一、这页管什么
修图软件或脚本重存之后 EXIF 不见了,分三种情况,各能救回多少,这页讲清楚。 EXIF 是什么、参数水印怎么加,见照片怎么加相机参数水印; 位置一类隐私字段,见EXIF / GPS 隐私自查。 参数是发微信之类聊天软件之后丢的,看这一篇更对症。
二、三步查到底
- 第一步:先查还剩什么
重存件的 exiftool 命令行输出,不是软件界面: -EXIF:all什么都没读到,二进制 EXIF 整段没了。对导出后的文件跑
exiftool -s -EXIF:all 照片.jpg。列得出机型、镜头、光圈、快门、ISO, 二进制 EXIF 就好好的,问题不在这里。像上图这样一行都没有,接着看第二步。不用命令行,也可以直接拖进镜笺看水印信息栏:机型和参数都印出来了,说明 EXIF 或 XMP 里至少有一处还在。
- 第二步:试 XMP 兜底
同一类文件的 -XMP:all命令行输出:二进制 EXIF 没了,参数还在 XMP 里。EXIF 为演示数据。再跑一次
exiftool -s -XMP:all 照片.jpg。Lightroom、Photoshop 导出的文件常见这种情况: 二进制 EXIF 段被清空,XMP 包里还留着一份参数。这种文件拖进镜笺,什么都不用做,它会自动从 XMP 补上机型、镜头、光圈、快门、ISO、焦距和日期, 线上实测有效。方向是例外:刻意不从 XMP 读,免得和文件本身的方向标记叠加,转两次。
- 第三步:都没有就手填机型
完全没有 EXIF 的照片套「标准水印2」,信息栏是空白的。这时能用的只剩顶栏的「本张机型兜底」。 EXIF 和 XMP 都没有,常见于
convert -strip一类处理,或者「导出为网页用」的预设。 镜笺顶栏有个「本张机型兜底」,最多 40 字,只用于这一张的水印显示:不跨照片、不保存, 也不写回导出文件的 EXIF,每张单独填。镜头、光圈、快门、ISO、日期没有手填入口,丢了就只能空着。
三、几种导出方式实测对照
exiftool -EXIF:all:用 Python Pillow 重新保存,没传 exif=,
二进制 EXIF 整段没了。画质没变,是保存时没把元数据带上。本机命令行输出,不是软件界面。
exiftool -XMP:all:二进制 EXIF 没了,参数还在 XMP 包里,
镜笺兜底读的就是这一段,方向除外。EXIF 为演示数据。| 文件 | 代表什么 | 字节 | 像素 | 机型 | 光圈 | 快门 | ISO | 焦距 | GPS |
|---|---|---|---|---|---|---|---|---|---|
| 原始文件 | 相机直出 | 201507 | 1240×827 | X-T5 | 2.8 | 1/500 | 320 | 23mm | 有 |
| Pillow save(),未传 exif= | 修图 / 脚本最常见的丢法 | 246343 | 1240×827 | — | — | — | — | — | 无 |
| Pillow save(),传了 exif=im.info['exif'] | 同一段代码,多写一个参数 | 247153 | 1240×827 | X-T5 | 2.8 | 1/500 | 320 | 23mm | 有 |
| 二进制 EXIF 已剥、XMP 还在 | Lightroom / Photoshop 常见形态 | 117273 | 1080×720 | EXIF 无 · XMP 有 | XMP 2.8 | XMP 1/500 | XMP 320 | XMP 23mm | 无 |
| convert -strip | 「导出为网页用」类预设的典型效果 | 140521 | 1240×827 | — | — | — | — | — | 无 |
看中间两行:同一段 Pillow 代码,只差一个 exif= 参数,一行全丢,一行原样保留。 丢参数是导出设置的事,跟压缩、画质无关。
第四行是另一种常见形态:二进制 EXIF 清空了,XMP 里还剩 8 个字段,镜笺能从这里读出参数; 原图按 IFD0、ExifIFD、GPS、XMP 合计是 34 个。数字为本机 exiftool 12.76 / Pillow 10.2.0 实测, 别的软件、别的版本可能不同,以你自己文件的检查结果为准。
修图软件剥掉了二进制 EXIF、XMP 还留着的那种,镜笺能直接读出来。拖一张进去就知道是哪种情况。
打开镜笺网页版四、常见失败案例
| 现象 | 原因 | 解法 |
|---|---|---|
| 导出后拖进镜笺,信息栏一片空白 | 导出时没勾保留元数据,或者用了「导出为网页用」一类预设 | 导出前在软件的元数据选项里勾上保留;已经导出的,回到原始文件重新导出,或者手填机型 |
| 手机修图 App 处理完,参数没了 | 修图软件重存时把元数据剥掉了 | 回到原始文件;修图之前先用原图做好参数水印 |
| 水印上只有参数,没有机型 | 文件里没有 EXIF Model 字段 | 换回原图;实在没有,用「本张机型兜底」手填 |
| 填了「本张机型兜底」,换下一张又要重填 | 它刻意按张生效,不跨照片、不保存 | 正常行为,每张单独填 |
五、下一步
六、常见问题
修图会因为画质变差而丢参数吗?
不会。元数据和像素分开存,丢参数是导出设置的问题。同一段代码只要显式保留 EXIF,比如 Pillow 的 save(exif=...),参数就原样保留,画质不受任何影响。
为什么有的照片「看起来没有 EXIF」其实还能读出参数?
二进制 EXIF 和 XMP 是两套独立的元数据。有些导出流程只清掉前者,参数还留在 XMP 包里,镜笺会从那里读出机型、镜头、光圈、快门、ISO、焦距和日期。两边都有的字段,以二进制 EXIF 为准。
参数彻底没了还能编回去吗?
光圈、快门、ISO、焦距编不回来。镜笺的「本张机型兜底」只能手填机型一项,只影响当前这张的水印显示,不写回文件,也不跨照片。