【发布时间】:2020-06-09 21:02:01
【问题描述】:
我正在尝试创建一个数组,其中包含第一列文件夹中所有图像的文件名和第二列图像的“所用时间”。这个时间应该是 hh:mm:ss:msmsms(或 hhmmssmsmsms),其中“ms”是毫秒。
我找到了一段代码,它使用 Pillow 库来提取图像的 EXIFTAG 数据。我意识到我需要 DateTimeOriginal 和 SubsecTimeOriginal 标签来获取我想要的数据。 现在的问题是我只是不明白下面的代码如何从图像中提取数据以及如何创建所需的数组。如果有人知道 .ExifTags 和 ._getexif() 模块是如何工作的,我们将不胜感激。
代码:
from PIL import Image
from PIL.ExifTags import TAGS
file_path = 'IMG_20200528_125319.jpg'
results = {}
i = Image.open(file_path)
info = i._getexif()
for tag, value in info.items():
decoded = TAGS.get(tag, tag)
results[decoded] = value
print results
【问题讨论】:
-
到底是什么问题?您可以像这样
DTO = info[36867]和SSTO = info[37521]的小节字段获得 DateTimeOriginal -
exiftool可以帮你调试,试试exiftool -p '$filename $DateTimeOriginal $SubSecTimeOriginal' *.jpg -
当我定义 SSTO = info[37521] 并尝试打印它时,我收到错误“KeyError: 37521”。我认为问题可能是 SubsecTimeOriginal 不包含在使用三星 Note4 上的 OpenCamera 应用程序拍摄的图像的 Exif 中。
-
exiftool上面的例子会立即告诉你。 -
好的,我终于成功了,感谢 exiftool 的提示。可悲的是,我认为 SubsecTime 标记缺少图片。我还将它与带有标签的 DSLR 佳能相机拍摄的图像进行了比较,但值为 00。我想标签在那里但值始终为 00。
标签: python python-imaging-library exif