如何在使用PIL调整图像大小后恢复EXIF数据?

3
这个问题曾经在这里提问过,但是它的回答写于几年前,参考了一个失效的链接,可能已不是最佳方法。 pyxiv2看起来可以完成任务,但为了一个貌似简单的任务需要很多依赖。
我还想知道调整大小后图片的哪些值将不再有效。显然,宽度和高度是其中之一。

在我的开发和Web服务器系统上尝试构建pyexiv2后,我决定自己动手。我已经快完成一个脚本,可以从一个文件中获取EXIF块并将其插入到另一个文件中。目前正在努力更改宽度、高度和方向,然后将其写入目标文件。完成后,我可能会发布链接。 - Jake
1个回答

3

如果有人想使用piexiv2,这里提供一个解决方案:使用PIL库调整图像大小,使用pyexiv2复制EXIF数据,并设置新尺寸的图像大小EXIF字段。

import pyexiv2
import tempfile
from PIL import Image


def resize_image(source_path, dest_path, size):
    # resize image
    image = Image.open(source_path)
    image.thumbnail(size, Image.ANTIALIAS)
    image.save(dest_path, "JPEG")

    # copy EXIF data
    source_image = pyexiv2.Image(source_path)
    source_image.readMetadata()
    dest_image = pyexiv2.Image(dest_path)
    dest_image.readMetadata()
    source_image.copyMetadataTo(dest_image)

    # set EXIF image size info to resized size
    dest_image["Exif.Photo.PixelXDimension"] = image.size[0]
    dest_image["Exif.Photo.PixelYDimension"] = image.size[1]
    dest_image.writeMetadata()

# resizing local file
resize_image("41965749.jpg", "resized.jpg", (600,400))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接