使用Python调整图像大小并保留EXIF和XMP元数据

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

多次被问到如何调整图像大小并保留现有的 exif 数据。我可以使用 PIL 轻松做到这一点:

from PIL import Image

im = Image.open("image.jpeg")
exif = im.info['exif']
# process the image, for example resize:
im_resized = im.resize((1920, 1080), resample=PIL.Image.LANCZOS)
im_resized.save("resized.jpeg", quality=70, exif=exif)

我想知道是否有一种方法可以保留原始图像中的 XMP 元数据? XMP 中有很多 GPS 数据,我希望将其保留在调整大小的版本中。

python image-processing exif xmp
2个回答
0
投票

枕头11.0 现在可以像复制 Exif 一样复制 XMP:

new_img.save(
    filename, 
    exif=old_img.info.get('exif'), 
    xmp=old_img.info.get('xmp'),
)

-1
投票

即使是后继 Pillow 也无法读取 XMP(和 IPTC)。此外,您并没有真正保留任何内容 - 您创建一个全新的文件并添加其他 EXIF 数据的副本(包括现在可能无效的信息,如宽度/高度)。

JFIF 文件不是黑魔法 - 它们的文件格式可以很容易地解析; XMP 最有可能在 APP1 段中找到(就像 EXIF 一样)。在极少数情况下,它跨越多个段。您可以首先使用 PIL/Pillow 创建文件,然后修改它 - 插入额外的段很简单,不需要额外的工作。

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