You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中使用read.exif读取图片元数据时出错,求解决方案

R中使用read.exif读取图片元数据报错问题

问题详情

我在R中使用read.exif函数读取图片元数据时遇到错误,该函数来自CTtracking工具包。

运行代码:

folder <- "./TEST"
dep.exdat <- read.exif(folder, tagfield="Keywords")

触发错误:

Error in `$<-.data.frame`(`*tmp*`, "rowid", value = c(1L, 1L, 1L, 1L,  : 
  replacement has 30 rows, data has 13
In addition: Warning message:
In scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  :

TEST文件夹内所有图片均已通过XnView添加标签,请问操作哪里有误?该如何解决?

排查与解决方法

  • 清理文件夹内非图片文件:检查TEST文件夹,移除隐藏文件(如.DS_Store、Thumbs.db)、临时文件或非图片格式文件。这类文件无Keywords标签,会导致解析时数据行数不匹配,触发报错。
  • 验证元数据格式:用exiftool手动检查单张图片的Keywords字段,命令行运行exiftool -Keywords 图片路径。XnView添加的多值Keywords可能用了函数不识别的分隔符,导致拆分后条目数和图片数不对应。如果是多值标签,可尝试将标签合并为单值后再测试。
  • 修复函数rowid逻辑:查看read.exif的代码,找到给数据框添加rowid的部分。问题出在函数生成的rowid向量长度(30)和解析出的元数据行数(13)不匹配,需确保每个图片对应的标签条目数和rowid重复次数一致——比如一张图片有3个Keywords,rowid要重复3次,而非生成固定长度向量。
  • 更新exiftool:确保系统安装了最新版exiftool,旧版本对某些元数据格式的解析可能存在异常,导致函数处理失败。

内容的提问来源于stack exchange,提问作者Ldymil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 11:24:11