图像exif /元数据读/写?

时间:2017-04-15 16:25:17

标签: python exif

一直在环顾四周,仍然似乎没有很好的文档记录和最新的图像exif /元数据操作。

我使用piexif

获得以下代码
import os
import piexif

for root, dirs, files in os.walk("C:\\Users\\Alan Partridge\\Desktop\\images"):
    if not files:
        continue
    prefix = os.path.basename(root)
    for f in files:
        #print os.path.join(root, f)
        exif_dict = piexif.load(os.path.join(root, f))
        print exif_dict
        for ifd in ("0th", "Exif", "GPS", "1st"):
            for tag in exif_dict[ifd]:
                print(piexif.TAGS[ifd][tag]["name"], exif_dict[ifd][tag])
        #os.rename(os.path.join(root, f), os.path.join(root, "{} ID {}".format(prefix, f)))

它会循环浏览文件夹,根据文件夹名称重命名文件(已注释掉)但是现在它会输出库可以找到的任何数据。

目前,它可以找到ImageDescription,这很好。我的问题是我该如何修改它?不幸的是,我无法解决这个问题。也许我错过了一些明显的东西?

2 个答案:

答案 0 :(得分:0)

查看https://piexif.readthedocs.io/en/latest/sample.html处的样本。您缺少整个piexif.dump()img.save()操作。

答案 1 :(得分:0)

图片Exif信息可以在本文档中找到:

http://www.cipa.jp/std/documents/e/DC-008-2012_E.pdf

使用piexif库构建exif信息,并写入目标文件:(python)

构建exif信息以保留源文件的方向,由Windows读取以显示正确的方向。

来源:http://piexif.readthedocs.io/en/latest/functions.html?highlight=save

zeroth_ifd = {piexif.ImageIFD.Orientation: image_orientation,
              piexif.ImageIFD.ImageWidth: int(new_width),
              piexif.ImageIFD.ImageLength: int(new_height),
              piexif.ImageIFD.Software: u"piexif"
              }

exif_dict = {"0th":zeroth_ifd}
exif_bytes = piexif.dump(exif_dict)

with open(dest, 'r+b') as f:
    with Image.open(dest,'r') as image:
        image.save(dest, "jpeg", exif=exif_bytes)