使用piexif设置元数据标签

时间:2018-04-24 10:10:55

标签: python metadata jpeg exif

我尝试使用piexif模块为jpegs设置特定的元数据。我从piexif.load()获得了相应的dicts。

data = piexif.load()

他们返回{'GPS':{},'Exif':{},'Interop':{},'thumbnail':无,'1st':{},'0th':{}}。 (也许答案非常明显,但我对这些话语有点困惑)

但是,我想知道在哪里以及写些什么来设置我的焦距,相机制造商和型号。

原因是,我想使用http://www.regard3d.org/index.php/documentation/details/picture-set的Regard3D重建GUI。

因此,我需要将jpeg的元数据和相机的数据添加到相机数据库中。这是三角测量步骤所必需的。

非常感谢您提前

2 个答案:

答案 0 :(得分:0)

标签在标准上与教程中的不同。它们应该是EXIF格式的Make,Model,Focal Length。

答案 1 :(得分:0)

我相信使用piexif可以完成的工作是有限的。虽然,我找不到相机的品牌/型号。 但是,您应该能够像这样访问焦距。 (当然,有多种方法可以实现这一点。这正是我想出的)

import piexif
from PIL import Image


img = Image.open('input filename or path')

# Defining dictionary
exif_dict = piexif.FocalLength(img.info["exif"])

if piexif.ExifIFD.FocalLength in exif_dict["Exif"]:
    print("Current Focal Length is ", exif_dict["Exif"][piexif.ExifIFD.FocalLength])
else:
    print("No Focal Length is set")

# Getting User Input
fl = input("Enter a Focal Length: ")

# Applying user variable
exif_dict["Exif"][piexif.ExifIFD.LensMake] = fl

# Converting to bytes
exif_bytes = piexif.dump(exif_dict)

#Saving Image
img.save("output filename or path", exif=exif_bytes)

虽然看起来确实有镜头品牌和镜头型号。

piexif.ExifIFD.LensMake
piexif.ExifIFD.LensModel

此外,可能值得注意的是,该值在某些图像上可能无法更改,有时更新图像的值似乎不适用于Windows 10 ui中显示的同一字段。我不确定这是我正在测试的图像的错误还是兼容性问题。

您可能还需要检查piexif docs,因为可能还会有更多信息。