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

如何使用Pillow读取ExifTool设置的XMP标签?

读取图片中的XMP标签问题

你用ExifTool写入的XMP:PreservedFileName和XMP:Title属于XMP元数据块,而当前Pillow代码只读取了Exif IFD(图像文件目录)里的内容,这就是读不到目标标签的原因。以下是两种可行的解决方法:

方法一:使用Pillow自带的getxmp()方法(Pillow 9.1.0+支持)

Pillow从9.1.0版本开始提供了直接读取XMP数据的接口,代码如下:

from PIL import Image

# 打开图片并读取XMP数据
with Image.open('P1050122.jpg') as img:
    xmp_dict = img.getxmp()
    
    # 提取目标标签
    preserved_filename = xmp_dict.get('PreservedFileName')
    title = xmp_dict.get('Title')
    
    print(f"原始文件名(PreservedFileName):{preserved_filename}")
    print(f"标题(Title):{title}")

如果读取不到,可打印xmp_dict查看完整键名——部分XMP标签可能带有命名空间前缀(比如dc:Title),需要对应调整键名。

方法二:使用pyexiftool直接调用ExifTool解析

如果你的Pillow版本较低,或者需要更全面的元数据解析能力,可以用ExifTool的Python绑定库pyexiftool:

  1. 先安装库:
pip install pyexiftool
  1. 编写读取代码:
import exiftool

# 调用ExifTool读取元数据
with exiftool.ExifToolHelper() as et:
    # 获取单张图片的元数据(返回列表,取第一个元素)
    metadata = et.get_metadata('P1050122.jpg')[0]
    
    # 提取XMP标签
    preserved_filename = metadata.get('XMP:PreservedFileName')
    title = metadata.get('XMP:Title')
    
    print(f"原始文件名(PreservedFileName):{preserved_filename}")
    print(f"标题(Title):{title}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 10:46:07