如何使用R提取照片的创建日期?

时间:2017-05-19 18:50:03

标签: r

我有超过800张图片,我需要提取创建日期。但是如果我使用file.mtime函数,它就无法正常工作。它只是我修改它的日期。有趣的是iPhoto(用于管理照片的mac程序)能够正确检测创建日期。

这是我正在使用的代码。

my.path = "~/Desktop/cool_path_here"
vec.jpg = list.files(path = my.path)
lapply(paste(my.path,vec.jpg,sep = "/"),FUN =  file.mtime)

是否有一个功能可以提取照片的创建日期,而不是"获取信息"中显示的日期。 mac上的菜单。

例如:(昨天是5月18日)

enter image description here

和iPhoto(3月16日发现):

enter image description here

R正在寻找:

2017-05-19 15:08:29

2 个答案:

答案 0 :(得分:4)

exif包用于extract the metadata

library(exif)
read_exif(paste(my.path,vec.jpg[1], sep="/"))$origin_timestamp

正在返回"2017:03:16 08:47:48"这就是我要找的东西!

答案 1 :(得分:1)

根据?file.infomtime是修改时间,ctime是“上次状态更改”时间,atime是最后一次“访问”时间。根据{{​​3}},POSIX标准(here)不包括文件标准属性中的创建时间。

file.info(my.path)$atime可能会更好。在这个测试中没有改变:

DF = data.frame(a = 1:10, b = 10:1)
tmp = tempfile()
write.table(DF, tmp)
Sys.time()
# [1] "2017-05-19 15:03:46 EDT"
file.info(tmp)[ , c('mtime', 'ctime', 'atime')]
#                                                mtime               ctime               atime
# /tmp/Rtmpzpi8p6/file29e932565c62 2017-05-19 15:03:46 2017-05-19 15:03:46 2017-05-19 15:03:46
DF$c = 11:20
Sys.sleep(10)
write.table(DF, tmp)
file.info(tmp)[ , c('mtime', 'ctime', 'atime')]
#                                                mtime               ctime               atime
# /tmp/Rtmpzpi8p6/file29e932565c62 2017-05-19 15:03:56 2017-05-19 15:03:56 2017-05-19 15:03:4

顺便说一句,请使用full.names参数list.files而不是pastesep='/'