gpt4 book ai didi

python-2.7 - 使用 PIL(枕头)将 EXIF 数据从 TIF(使用 exifread 读取)写入 JPEG 文件

转载 作者:行者123 更新时间:2023-12-02 01:43:36 25 4
gpt4 key购买 nike

我正在编写一个函数来执行一些专门的图像处理并将图像保存为 JPEG 格式。当然,元数据应该尽可能地保留。我正在使用 PIL (Pillow) 并成功地使用 JPEG 文件作为输入数据,因为在这种情况下 PIL 能够读取 EXIF 数据。

但是,对于 TIF 图像,信息字典不包含“exif”键。使用模块 exifread,读取 exif 数据工作正常,像这样

import exifread
f = open('tifimage.tif')
img_exif = exifread.process_file(f)
f.close()

现在我想在保存时将此 exif 数据传递给 PIL,例如
img.save(filename, "JPEG", exif = img_exif)

但我不知道如何正确格式化 exif 数据,因为它们是来自 exifread 的 dict 类型,但需要是原始字符串格式或 PIL 的只读缓冲区。

非常感谢任何帮助!

最佳答案

我们要找的可能是 Pyxif:https://pypi.python.org/pypi/Pyxif

图书馆就是这样做的。

您可以从以下位置获取当前的 Exif 信息:

im = Image.open(file_path)
exif_data = im.info['exif']

然后,您可以使用 pyxif 将其转换为字典:
zeroth_ifd, exif_ifd, gps_ifd = pyxif.load(file_path)

或者
zeroth_ifd, exif_ifd, gps_ifd = pyxif.load(exif_data)

然后你可以修改你的 exif字典,当您保存图像时,您可以使用:
zeroth_ifd[pyxif.ZerothIFD.Artist] = args.artist
zeroth_ifd[pyxif.ZerothIFD.Copyright] = args.copyright

exif_ifd[pyxif.ExifIFD.PixelXDimension] = size[0]
exif_ifd[pyxif.ExifIFD.PixelYDimension] = size[1]

exif_bytes = pyxif.dump(zeroth_ifd, exif_ifd, gps_ifd)

im.save(output_path, "JPEG", quality=85, exif=exif_bytes)

关于python-2.7 - 使用 PIL(枕头)将 EXIF 数据从 TIF(使用 exifread 读取)写入 JPEG 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27018588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com