Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在使用PIL调整图像大小后恢复EXIF数据?_Python_Python Imaging Library_Exif - Fatal编程技术网

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

Python 如何在使用PIL调整图像大小后恢复EXIF数据?,python,python-imaging-library,exif,Python,Python Imaging Library,Exif,有人问过这个问题,但它在几年前得到了回答,答案是指一个断开的链接,可能不再是最好的方法 看起来它可以完成任务,但是对于一个看似简单的任务,它有很多依赖项 我还想知道哪些值对于调整大小的图像不再有效。宽度和高度是显而易见的。为了防止有人想使用PIEXv2,这里有一个解决方案:使用PIL库调整图像大小,使用pyexiv2复制EXIF数据,并使用新大小设置图像大小EXIF字段 import pyexiv2 import tempfile from PIL import Image def resi

有人问过这个问题,但它在几年前得到了回答,答案是指一个断开的链接,可能不再是最好的方法

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


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

为了防止有人想使用PIEXv2,这里有一个解决方案:使用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))

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