使用Python读取Exif:MakerNote IFD中可能损坏的字段标记0x0000

问题描述 投票:2回答:1

我正在一个项目中,我想从.jpg图像中读取元数据,并将其写入文件。我在Olympus TG-4上拍摄了一些照片,并尝试使用Python 3读取Exif数据。

我的脚本说:

import exifread
f = open('P8110003.JPG', 'rb')
tags = exifread.process_file(f)

我收到消息'Possibly corrupted field Tag 0x0000 in MakerNote IFD'我尝试了五个不同的jpg文件,它们都导致相同的消息。我今天拍了张照片-它们真的很腐败吗?

这不会返回错误:

import PIL.Image
import PIL.ExifTags
img = PIL.Image.open('P8110003.JPG')
exif_data = img._getexif()

exif = {
    PIL.ExifTags.TAGS[k]: v
    for k, v in img._getexif().items()
    if k in PIL.ExifTags.TAGS
}

list(exif_data.values())
print(exif_data.values())

因此,我假设相机以某种专有格式存储元数据,而Exifread并不期望这种格式?我只想读取元数据并将其存储在文本文件中,然后导入数据库。我猜想从字典中读出它是可行的解决方案。如果有人可以阐明为何Exifread无法正常工作,我们将感兴趣。

python image tags exif
1个回答
0
投票

由于类似的问题,我正在做一些小型研究。我知道问题很老,但也许有些新人也会遇到同样的问题(例如我)。

什么是MarkerNote标签?“ MakerNote”标签通常包含专有二进制格式的图像信息,其中某些“特定于制造商的”信息已被“解码”,但它们不应包含“外部世界”应该可以访问的信息。

为什么此MarkerNote标记容易损坏?如果通过插入或编辑MakerNote标签之前的标签来移动MakerNote标签,则专有格式可能会中断(例如,添加版权信息或Exif注释)。

我应该担心吗?尽管某些制造商以这种专有格式保存重要信息(例如Nikon for ISO Speed),但这些信息通常并不重要。

我该怎么办?只需忽略它,就不会影响照片质量或相关信息。

© www.soinside.com 2019 - 2024. All rights reserved.