python - Python - 从图像中提取元数据的问题
问题描述
我正在尝试使用以下代码从图像中提取元数据:
from PIL import Image
from PIL.ExifTags import TAGS
import pandas as pd
import glob
import urllib
import itertools
def get_exif(fn):
ret = {}
i = Image.open(fn)
info = i._getexif()
for tag, value in info.items():
decoded = TAGS.get(tag, tag)
ret[decoded] = value
return ret
LoadingDir = "C:/IMAGES/TEST/"
final_df = pd.DataFrame()
for file in glob.glob(LoadingDir+'*.jpg'):
data = get_exif(file)
temp_df = pd.DataFrame([data])
temp_df = temp_df.loc[:,['ExifImageWidth','ExifImageHeight', 'XResolution', 'YResolution']]
final_df = final_df.append(temp_df)
final_df
当我在没有 for 功能的情况下在单个图像上运行代码时,它可以工作,但是当我在这里运行它时,我收到此错误:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-48-a739cd753170> in <module>
18 final_df = pd.DataFrame()
19 for file in glob.glob(LoadingDir+'*.jpg'):
---> 20 data = get_exif(file)
21 temp_df = pd.DataFrame([data])
22 temp_df = temp_df.loc[:,['ExifImageWidth','ExifImageHeight', 'XResolution', 'YResolution']]
<ipython-input-48-a739cd753170> in get_exif(fn)
10 i = Image.open(fn)
11 info = i._getexif()
---> 12 for tag, value in info.items():
13 decoded = TAGS.get(tag, tag)
14 ret[decoded] = value
AttributeError: 'NoneType' object has no attribute 'items'
我在这里想念什么?
解决方案
+1 杰森所说的话。您刚刚找到了没有元数据的图像。在您的函数中,您可以将“无”分配给您正在寻找的每个属性 - 这似乎是保持数据输出可参考的好选择。
推荐阅读
- git - 如何通过命令行在远程分支上执行 Git 拉取请求
- f# - 如何以紧凑的方式避免意外的部分应用?
- python - SikuliX + python,编辑导入模块后出现奇怪的NameError
- azure - CosmosDB MongoDB API:新查询被隐藏
- url - 如何从 URL 选项中使用 Qualtrics 的图形从 GitHub 图形中提取
- java - 如何重载和重用类构造函数java
- java - 无法从命令行运行命令:ffmpeg 不转换文件
- java - Selenium chrome 无头问题,卡在登录页面
- javascript - 如何单击没有任何 id 或 name 属性的按钮
- ios - WKWebViews 共享 cookie 存储