一直在环顾四周,仍然似乎没有很好的文档记录和最新的图像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
,这很好。我的问题是我该如何修改它?不幸的是,我无法解决这个问题。也许我错过了一些明显的东西?
答案 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)
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)