【问题标题】:How can I restore EXIF data after resizing an image with PIL?使用 PIL 调整图像大小后如何恢复 EXIF 数据?
【发布时间】:2010-11-25 18:45:23
【问题描述】:

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

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

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

【问题讨论】:

  • 在我的开发和 Web 服务器系统上努力构建 pyexiv2 之后,我决定自己动手做。我几乎完成了一个脚本,它从一个文件中获取 EXIF 块并将其插入另一个文件。只需在将其写入目标文件之前更改宽度、高度和方向。完成后我可能会发布一个链接。

标签: python python-imaging-library exif


【解决方案1】:

以防万一有人想使用 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))

【讨论】:

    猜你喜欢
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-01
    • 2012-12-01
    • 1970-01-01
    • 2016-10-04
    • 1970-01-01
    相关资源
    最近更新 更多