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

时间:2010-10-27 01:36:22

标签: python python-imaging-library exif

这个问题已经被问到before,但是几年前就回答了这个问题,答案是指链接断了,可能不再是最好的方法了。

pyxiv2看起来会完成任务,但它对于看似简单的任务有很多依赖性。

我还想知道哪些值对于调整大小的图像不再有效。宽度和高度是显而易见的。

1 个答案:

答案 0 :(得分:3)

如果有人想使用exiv2,这里有一个解决方案:使用PIL库调整图像大小,使用exiv2复制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))