如何使用Python正确获取和更新JPEG元数据中的标题、注释和标签?

问题描述 投票:0回答:1

我正在编写一个 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)

但是获取和更新都不起作用。这是最新的情况。请帮忙。谢谢

python metadata exif
1个回答
0
投票

要管理和更新 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 脚本环境进行访问。

© www.soinside.com 2019 - 2024. All rights reserved.