我正在编写一个 Python 脚本,用于处理一批 JPEG 图像,更新其元数据以包含新标题、评论和标签。我的目标是从 MySQL 数据库读取元数据并将其应用到每个图像的 IPTC 数据字段。我使用 iptcinfo3 库来处理 IPTC 元数据,并使用 PIL(Pillow)库来处理一般图像处理任务。
尽管我付出了努力,但我还是遇到了 iptcinfo3 库的问题,特别是在更新“对象名称”(标题)、“标题/摘要”(评论)和“关键字”(标签)时。以下是我需要帮助的要点:
正确更新标题、评论和标签的 IPTC 字段。我可以毫无问题地从数据库中检索信息,但我不确定是否正确更新了 IPTC 字段。这是我当前方法的片段:
from PIL import Image
import iptcinfo3
def update_image_metadata(jpeg_path, title, keywords):
info = iptcinfo3.IPTCInfo(jpeg_path, force=True)
info['object name'] = "this is title"
info['caption/abstract'] = f"this is comments {title} vector image"
info['keywords'] = "this is tags"
info.save_as(jpeg_path)
但是获取和更新都不起作用。这是最新的情况。请帮忙。谢谢
要管理和更新 JPEG 元数据中的标题、注释和标签,我建议使用
exiftool
实用程序,它是一个强大的工具,用于读取、写入和编辑各种文件中的元信息。虽然 exiftool
本身是一个命令行实用程序,但您可以通过利用 subprocess
模块执行 exiftool
命令,轻松地从 Python 中使用它。这种方法为处理图像中的元数据提供了强大的解决方案。
首先,确保您的系统上安装了
exiftool
。您可以从 https://exiftool.org/ 下载它并按照适合您的操作系统的安装说明进行操作。
这是一个 Python 脚本,演示如何使用
exiftool
更新 JPEG 图像中的标题、注释和标签:
import subprocess
def update_image_metadata(jpeg_path, title, comments, keywords):
# Command to update the title, comments, and keywords
cmd = [
'exiftool',
'-overwrite_original', # Overwrites the original file with the updated metadata
f'-Title={title}',
f'-Comment={comments}',
f'-Keywords={keywords}',
jpeg_path
]
# Execute the command
subprocess.run(cmd, check=True)
print(f"Metadata updated for {jpeg_path}")
# Example usage
jpeg_path = 'path/to/your/image.jpg'
title = "Your Image Title"
comments = "This is a comment about the image."
keywords = "keyword1, keyword2, keyword3"
update_image_metadata(jpeg_path, title, comments, keywords)
此脚本构建并执行一个
exiftool
命令,用于更新 JPEG 文件中指定的元数据字段。请务必将 'path/to/your/image.jpg'
、'Your Image Title'
、'This is a comment about the image.'
和 'keyword1, keyword2, keyword3'
替换为您的实际文件路径和元数据值。
请注意,此脚本要求
exiftool
已正确安装在您的系统上,并且可以从您的 Python 脚本环境进行访问。