如何在R中借助exiftool为图片EXIF写入标签与值?
在R中使用exiftool写入EXIF键值的正确方法
你遇到的错误是因为直接在R控制台输入exiftool命令,R会将其当作R代码解析,自然报错。必须通过R的系统调用函数执行外部的exiftool命令,以下是具体解决方法:
- 调用exiftool的正确方式:使用R的
system2()函数(推荐,参数更规范)来执行exiftool命令,所有命令参数放在args参数中。 - 修改现有字符型EXIF标签:比如修改Comment标签:
system2("exiftool", args = c("-Comment='This is a new comment'", "dst.jpg"))
- 添加自定义标签:EXIF标准外的自定义标签需指定命名空间(如XMP),否则exiftool无法识别。例如添加ProjectName和district:
# 添加ProjectName system2("exiftool", args = c("-XMP:ProjectName='LC_BMRG_002'", "AAA_9083.JPG")) # 添加district system2("exiftool", args = c("-XMP:district='Childers'", "AAA_9083.JPG"))
- 处理数值型标签:比如Clarity是数值型标签,必须传入数值而非字符串:
system2("exiftool", args = c("-Clarity=50", "AAA_9083.JPG"))
- 批量处理图片:遍历文件夹内所有图片批量添加标签:
img_files <- list.files(path = "你的图片文件夹路径", pattern = "\\.JPG$", full.names = TRUE) for (img in img_files) { system2("exiftool", args = c("-overwrite_original", "-XMP:ProjectName='LC_BMRG_002'", img)) }
- 取消自动备份:默认exiftool会生成原文件的备份(如
AAA_9083.JPG_original),添加-overwrite_original参数可取消备份。
内容的提问来源于stack exchange,提问作者David Hine
相关产品推荐
相关产品推荐

