'Corrupt' Android Camera-X 上的 Exif 数据
'Corrupt' Exif data on Android Camera-X
我一直在测试向 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 Version | Exif Version 2.2
我认为这是 Camera X 损坏数据的错误,但我只是尝试使用 exiftool
读取它并且它正确显示了所有字段。在两个相机库 (CameraX/Camera2) 上,Exif 版本显示为:
Exif Version : 0220
我在多个设备上都遇到过这种情况,例如一个 Samsung Galaxy A01 CORE SM-A013M and a Nokia 8.1
尝试使用谷歌搜索来自 exif
的有关格式无效的错误消息,但找不到任何内容。
这是 Camera X、Exif 或两者的错误吗?还是我可以安全地忽略它? (假设我确实需要有效的 Exif 数据 :))
错误消息是正确的:标签 0x9000
“ExifVersion”只能使用 UNDEFINED
类型
- the documentation from 2002, page 26 和
等值得信赖的资源
- Exiv2 和
- AWare Systems.
但是任何消费者仍然可以支持其他数据类型,例如 ASCII
- 如果 exiftool 没有产生错误,那么很可能是为了您的方便,而在同时您没有意识到遇到了违反标准的情况。
作者产生了这个错误:如果遵循标准 UNDEFINED
作为必须使用的数据类型,没有别的。两种数据类型之间的一个主要区别是:一种带有终止字节,另一种则没有。同样,使用没有终止字节的 ASCII
也是一个错误 - 在字段“ExifVersion”上,当字段长度定义为恰好 4 个字节时,不可能用所需的终止字节编写文字 0220
已经。
实际上差异并不重要:
- 我将二进制
0x30 0x32 0x32 0x30
解释为 4 个字节(根据数据类型 UNDEFINED
)或
- 文字
0220
(有或没有终止符 0x00
,根据数据类型 ASCII
)。
即使我作为消费者仍然能够阅读它,尽管遵循了标准,但它不应该被忽视。这有点像在红灯亮时过马路:它可能在某些条件下有效,但这并不能使它正常。
我一直在测试向 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 Version | Exif Version 2.2
我认为这是 Camera X 损坏数据的错误,但我只是尝试使用 exiftool
读取它并且它正确显示了所有字段。在两个相机库 (CameraX/Camera2) 上,Exif 版本显示为:
Exif Version : 0220
我在多个设备上都遇到过这种情况,例如一个 Samsung Galaxy A01 CORE SM-A013M and a Nokia 8.1
尝试使用谷歌搜索来自 exif
的有关格式无效的错误消息,但找不到任何内容。
这是 Camera X、Exif 或两者的错误吗?还是我可以安全地忽略它? (假设我确实需要有效的 Exif 数据 :))
错误消息是正确的:标签 0x9000
“ExifVersion”只能使用 UNDEFINED
类型
- the documentation from 2002, page 26 和 等值得信赖的资源
- Exiv2 和
- AWare Systems.
但是任何消费者仍然可以支持其他数据类型,例如 ASCII
- 如果 exiftool 没有产生错误,那么很可能是为了您的方便,而在同时您没有意识到遇到了违反标准的情况。
作者产生了这个错误:如果遵循标准 UNDEFINED
作为必须使用的数据类型,没有别的。两种数据类型之间的一个主要区别是:一种带有终止字节,另一种则没有。同样,使用没有终止字节的 ASCII
也是一个错误 - 在字段“ExifVersion”上,当字段长度定义为恰好 4 个字节时,不可能用所需的终止字节编写文字 0220
已经。
实际上差异并不重要:
- 我将二进制
0x30 0x32 0x32 0x30
解释为 4 个字节(根据数据类型UNDEFINED
)或 - 文字
0220
(有或没有终止符0x00
,根据数据类型ASCII
)。
即使我作为消费者仍然能够阅读它,尽管遵循了标准,但它不应该被忽视。这有点像在红灯亮时过马路:它可能在某些条件下有效,但这并不能使它正常。