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

3 投票
1 回答
1683 浏览
提问于 2025-04-16 06:08

这个问题之前有人问过,可以在这里查看,不过那是几年前的回答,里面提到的链接已经坏掉了,可能现在的方法也不再是最好的了。

pyxiv2 看起来可以完成这个任务,但为了一个看似简单的工作,它需要很多额外的东西。

我还想知道,调整大小后,哪些值会变得不再有效。宽度和高度是显而易见的。

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))

撰写回答