使用 exiftool 方便快捷写入图片的 exif metadata
内容提要
作者使用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%。