编辑照片时如何使用Python为图片添加元数据?
Python 为图片添加标题/描述/关键词元数据实现方案
你可以结合现有使用的Pillow库,搭配轻量元数据处理库实现需求,无需额外切换其他软件操作,以下是可直接套用的实现方案:
前置依赖安装
首先安装需要的第三方库:
pip install pillow piexif pyiptcinfo3
piexif用于处理图片EXIF元数据pyiptcinfo3用于处理IPTC元数据(标题、描述、关键词通常存在该字段下,兼容性更好)
整合你现有编辑流程的完整代码
以下代码在你原有调整图片对比度的逻辑基础上,增加了元数据写入步骤:
from PIL import Image, ImageEnhance import piexif from iptcinfo3 import IPTCInfo # 1. 原有图片编辑逻辑:调整对比度 im = Image.open("sample-image.jpg") enhancer = ImageEnhance.Contrast(im) factor = 1.5 im_output = enhancer.enhance(factor) # 2. 先保存临时编辑后的图片,用于后续写入元数据 temp_path = 'temp_edit.jpg' im_output.save(temp_path) # 3. 写入IPTC元数据(标题、描述、关键词) iptc = IPTCInfo(temp_path, force=True) # 写入标题 iptc['object name'] = '你的图片标题' # 写入描述 iptc['caption/abstract'] = '这张图片的详细描述内容' # 写入关键词,格式为列表 iptc['keywords'] = ['风景', '旅行', '2024'] # 保存元数据修改 iptc.save() # 4. 可选:补充写入EXIF元数据 exif_dict = piexif.load(temp_path) # 写入作者信息示例 exif_dict['0th'][piexif.ImageIFD.Artist] = '作者名称'.encode('utf-8') exif_bytes = piexif.dump(exif_dict) # 5. 最终保存带有元数据的成品图片 final_img = Image.open(temp_path) final_img.save('more-contrast-image.jpg', exif=exif_bytes) # 可选:删除临时文件 import os os.remove(temp_path)
注意事项
- 目前元数据写入对JPG格式兼容性最好,PNG、WebP等格式对IPTC字段的支持可能存在差异
- 如果你只需要写入基础EXIF字段,可以去掉
pyiptcinfo3相关逻辑,仅用piexif即可满足需求
内容的提问来源于stack exchange,提问作者project.py
相关产品推荐
相关产品推荐

