首页 > 解决方案 > 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'

我在这里想念什么?

标签: pythonpython-3.x

解决方案


+1 杰森所说的话。您刚刚找到了没有元数据的图像。在您的函数中,您可以将“无”分配给您正在寻找的每个属性 - 这似乎是保持数据输出可参考的好选择。


推荐阅读