【问题标题】:'Corrupt' Exif data on Android Camera-XAndroid Camera-X 上的“损坏”Exif 数据
【发布时间】:2021-11-27 08:10:27
【问题描述】:

我一直在测试迁移到 Android 的新 Camera X 库并使用 exif $FILE 检查 EXIF 数据。 显示了一些属性,但值的数量似乎被截断并且显示错误:

Corrupt data
The data provided does not follow the specification.
ExifEntry: The tag 'ExifVersion' contains data of an invalid format ('ASCII', expected 'Undefined').

使用 Camera 2 API 来自同一设备的照片将显示所有值并将 Exif 版本列为:

Exif 版本 | Exif 2.2 版

我认为这是 Camera X 损坏数据的错误,但我只是尝试使用 exiftool 读取它,它正确显示了所有字段。在两个相机库(CameraX/Camera2)上,Exif 版本显示为:

Exif 版本:0220

这发生在我的多个设备上,例如Samsung Galaxy A01 CORE SM-A013MNokia 8.1

尝试使用谷歌搜索来自 exif 的有关无效格式的错误消息,但找不到任何内容。

这是 Camera X、Exif 还是两者都有的错误?还是我可以安全地忽略它? (假设我确实需要有效的 Exif 数据:))

【问题讨论】:

    标签: exif android-camerax


    【解决方案1】:

    错误信息是正确的:标签0x9000“ExifVersion”可能只使用类型UNDEFINED

    但是任何消费者仍然可以支持其他数据类型,例如ASCII - 如果 exiftool 没有产生错误,那么很可能是为了您的方便,同时您不知道其中违反了标准。

    作者产生了这个错误:如果遵循标准UNDEFINED 作为数据类型必须使用,没有别的。两种数据类型之间的一个关键区别是:一种带有终止字节,另一种则没有。同样,在没有终止字节的情况下使用 ASCII 也是一个错误 - 在字段“ExifVersion”上,当字段长度已经定义为正好 4 个字节时,不可能用所需的终止字节编写文字 0220

    实际上差异并不重要:

    • 要么我将二进制 0x30 0x32 0x32 0x30 解释为 4 个字节(根据数据类型 UNDEFINED)要么
    • 文字0220(根据数据类型ASCII,有或没有终止符0x00)。

    即使我作为消费者仍然能够阅读它,尽管遵循了标准,但它不应该被忽视。这有点像过马路,而红绿灯对你来说是红色的:它可能在某些条件下工作,但这并不能使它正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-22
      • 1970-01-01
      • 1970-01-01
      • 2022-11-07
      • 2021-09-08
      • 1970-01-01
      • 2012-10-15
      • 1970-01-01
      相关资源
      最近更新 更多