使用 exiftool 方便快捷写入图片的 exif metadata

💡 原文中文,约3200字,阅读约需8分钟。
📝

内容提要

作者使用squoosh批量压缩照片,但压缩后丢失了exif数据。尝试了其他压缩工具,如tinypng.com,同样无法保留exif元数据。最终使用exiftool工具写入照片的原始exif metadata,解决了问题。提供了一个shell脚本,将输入目录下的所有jpg文件的元数据写入输出目录中的压缩后的文件。通过exiftool写入exif元数据后,文件会稍微变大。

🔎

延伸解读

压缩工具丢失元数据的普遍问题

文章指出,squoosh 和 tinypng.com 等压缩工具在压缩图片时都会丢失 exif 元数据。即使通过 tinypng 的 API 尝试保留部分元数据,也只能保留拍摄时间,而相机信息、镜头信息、拍摄参数等重要数据仍然丢失。这提醒读者在选择压缩工具时,需注意元数据保留能力,尤其是对摄影工作流有要求的用户。

ExifTool 作为元数据修复方案

作者最终使用 ExifTool 将原始图片的 exif 元数据写入压缩后的图片,解决了元数据丢失问题。ExifTool 是一款免费、跨平台的开源工具,支持多种元数据格式。这表明,当压缩工具无法保留元数据时,可以借助专门的元数据工具进行后期修复,且操作相对简单。

批量处理脚本与权限注意事项

作者提供了一个 shell 脚本,用于批量将输入目录下所有 jpg 文件的元数据写入输出目录中的压缩文件。脚本会检查文件是否存在,并自动删除备份文件。作者特别提醒,应在普通用户下执行脚本,避免 root 操作破坏文件权限和所有者,影响 samba 共享访问。这为需要批量处理元数据的用户提供了实用参考。

元数据写入的代价与收益

写入 exif 元数据后,文件体积会略微增大,粗略估计约增加 5%。但作者认为这是值得的,因为保留元数据后,照片在 immich 中能有更好的读写性能,浏览时也能查看 exif 信息。同时,作者强调原图仍有备份,压缩后的图片仅用于特定用途。读者需权衡文件大小与元数据保留的需求。

❓

Q&A

如何使用exiftool恢复图片的exif元数据?

可以通过exiftool工具将原始exif元数据写入压缩后的图片,确保文件保留重要信息。

squoosh压缩图片后为什么会丢失exif数据?

squoosh在压缩图片时会丢失exif数据,这是该工具的一个限制。

exiftool是什么?

ExifTool是一个免费、跨平台的开源软件,用于读写和处理图像及其他文件的元数据。

使用tinypng压缩图片时能否保留exif元数据?

使用tinypng压缩图片时,无法保留exif元数据,包括相机信息和拍摄参数。

如何编写shell脚本批量处理jpg文件的exif元数据?

可以编写一个shell脚本,从输入目录读取jpg文件,并使用exiftool将元数据写入输出目录中的压缩文件。

使用exiftool后文件大小会有变化吗?

经过exiftool写入exif元数据后,文件大小会稍微增加,约增加5%。

🏷️

标签

➡️

继续阅读