python - 使用 Python 读取 Exif : Possibly Corrupted Field Tag 0x0000 in MakerNote IFD

标签 python image tags exif

我正在做一个项目,我想从 .jpg 图像中读取元数据,并将它们写入文件。我在奥林巴斯 TG-4 上拍了一些照片,并尝试用 Python 3 读取 Exif 数据。

我的脚本说:

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

我收到消息 “MakerNote IFD 中可能已损坏的字段标记 0x0000” 我试过五种不同的 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 无法正常工作的原因,我们将很感兴趣。

最佳答案

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

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

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

我应该担心吗? 尽管一些制造商以这种专有格式保留重要信息(例如尼康的 ISO 速度),但这些信息通常并不重要。

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

关于python - 使用 Python 读取 Exif : Possibly Corrupted Field Tag 0x0000 in MakerNote IFD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51805562/

相关文章:

python - 在python中包含带有特殊字符的图例标签上的变量

android - Picasso库异常崩溃

C# - WPF 如何取消引用 BitmapImage 以便删除源文件?

ios - 使用 MKNetworking 图像上传 PHP 获取内部错误 500

php - 使用 PHP 从 XML 中删除空标签

python - 列表索引超出范围

python - 如何通过 SqlAlchemy 中的 joinloaded 表进行过滤?

python - Tornado Sentry 集成

swift - 在 viewController 中的 2 个不同的 ImageView 上使用 2 个不同的 UIPanGestureRecongizer

android - 如何修复 NFC 中的 uid