Exifinterface

读取和写入图像文件 EXIF 标签。
最新更新 稳定版 候选发布版 Beta 版 Alpha 版
2025 年 4 月 23 日 1.4.1 - - -

声明依赖项

要添加对 Exifinterface 的依赖项,您必须将 Google Maven 仓库添加到您的项目中。请阅读Google 的 Maven 仓库了解更多信息。

在您应用或模块的 build.gradle 文件中添加您所需构件的依赖项

Groovy

dependencies {
    implementation "androidx.exifinterface:exifinterface:1.4.1"
}

Kotlin

dependencies {
    implementation("androidx.exifinterface:exifinterface:1.4.1")
}

有关依赖项的更多信息,请参阅添加构建依赖项

反馈

您的反馈有助于改进 Jetpack。如果您发现新问题或有改进此库的想法,请告诉我们。在创建新问题之前,请查看此库中现有问题。您可以通过点击星形按钮为现有问题投票。

创建新问题

有关更多信息,请参阅问题跟踪器文档

版本 1.4

版本 1.4.1

2025 年 4 月 23 日

androidx.exifinterface:exifinterface:1.4.1 已发布。版本 1.4.1 包含这些提交

Bug 修复

  • 修复了向 setAttribute 传递空值给 TAG_XMP 会抛出异常的错误。

版本 1.4.0

2025 年 2 月 26 日

androidx.exifinterface:exifinterface:1.4.0 已发布。版本 1.4.0 包含这些提交

版本 1.4.0-rc01

2025 年 1 月 29 日

androidx.exifinterface:exifinterface:1.4.0-rc01 已发布,自 beta01 以来无更改。版本 1.4.0-rc01 包含这些提交

版本 1.4.0-beta01

2025 年 1 月 15 日

androidx.exifinterface:exifinterface:1.4.0-beta01 已发布。版本 1.4.0-beta01 包含这些提交

API 变更

  • 更新 HEIC XMP 处理,优先使用文件中单独段的 XMP 数据,而不是 Exif 数据中的标签 700。

Bug 修复

  • 修复 ExifInterface.getThumbnail*() 方法在调用 saveAttributes() 后无法正确工作的问题(之前调用会成功,但结果不正确/未定义)
  • 修复 PNG XMP 处理,以读取和写入单独的 iTXt XMP 块,而不是 eXIf 块中的标签 700。
  • 修复处理带有尾部非 WebP 数据的图像文件时 WebP 图像损坏的问题。(b/385766064)。

版本 1.4.0-alpha01

2024 年 11 月 13 日

androidx.exifinterface:exifinterface:1.4.0-alpha01 已发布。版本 1.4.0-alpha01 包含这些提交

新功能

  • 添加了对读取 HEIF 图像中的 XMP 数据支持。
  • 添加了对读取 AVIF 图像中的 Exif 和 XMP 支持。

API 变更

  • 指出 setGpsInfolocation 参数是 @Nullable,并且传递 null 将导致无操作。(If924cb/236484611

Bug 修复

  • 遇到无效 IFD 偏移后继续解析(b/264729367)。
  • 处理 WebP 图像,这些图像在其 Exif 数据之前错误地包含 JPEG APP1 标记(b/281638358)。
  • 确保 saveAttributes() 将带有单独 XMP 段的 JPEG 图像中的 XMP 更改存储到相同的单独 XMP 段中,而不是写入 TIFF/Exif 标签 700,因为 XMP 规范不支持该标签,并且许多工具无法找到它们。
  • 保存时避免将单独段中的 XMP 数据复制到 TIFF 预览目录中(b/309843390)。
  • 提高双精度到有理数转换的精度。(b/312680558)。
  • 接受有理数格式 (x/y) 到 setAttribute 用于“传统”有理数标签,这些标签在从 getAttribute 返回时会自动转换为十进制(b/312680558)。
  • 确保添加到尚不包含 XMP 的 JPEG 图像中的 XMP 数据写入到单独的段中,如 XMP 规范所规定。ExifInterface 文档规定在 JPEG 图像中优先使用 Exif 700 标签中的 XMP(违反规范),因此在读取/写入具有现有 XMP 数据的图像时保留此行为。
  • 修复写入高度或宽度大于 8191 像素的 WebP 图像时输出损坏的问题(b/342697059)。
  • 此库现在使用 JSpecify 空值注解,它们是类型使用的。Kotlin 开发者应使用以下编译器参数强制正确使用:-Xjspecify-annotations=strict(这是 Kotlin 编译器 2.1.0 版开始的默认设置)。(I5cd0fb/326456246)
  • 移除了对新平台 API 访问的手动概要,因为在使用 AGP 7.3 或更高版本(例如 R8 版本 3.3)的 R8 以及使用 AGP 8.1 或更高版本(例如 D8 版本 8.1)的所有构建中,这都会通过 API 建模自动发生。建议不使用 AGP 的客户端更新到 D8 版本 8.1 或更高版本。有关更多详细信息,请参阅本文。( If6b4cb/345472586)

版本 1.3.7

版本 1.3.7

2023 年 12 月 13 日

androidx.exifinterface:exifinterface:1.3.7 已发布。版本 1.3.7 包含这些提交。

Bug 修复

  • 当尝试写入过大的 JPEG APP1 段时,从 ExifInterface.saveAttributes() 抛出异常(之前我们会写入一个无效的 APP1 段,其长度不正确且被截断:(b/263747161))。在遇到无效的 IFD 偏移后继续解析(之前解析会立即停止,这可能导致返回不正确的值:(b/264729367))。

版本 1.3.6

版本 1.3.6

2023 年 2 月 8 日

androidx.exifinterface:exifinterface:1.3.6 已发布。版本 1.3.6 包含这些提交。

Bug 修复

  • 修复了从 WebP VP8L 块读取 alpha 位的问题(b/255405635)。

版本 1.3.5

版本 1.3.5

2022 年 10 月 24 日

androidx.exifinterface:exifinterface:1.3.5 已发布。版本 1.3.5 包含这些提交。

Bug 修复

  • 修复了 saveAttributes() 产生无效 WebP 文件的两种情况。

版本 1.3.4

版本 1.3.4

2022 年 10 月 5 日

androidx.exifinterface:exifinterface:1.3.4 已发布。版本 1.3.4 包含这些提交。

Bug 修复

  • 移除对将属性保存到 DNG 文件的支持。1.3.3 中添加的支持不完整,并产生了损坏的文件。

版本 1.3.3

版本 1.3.3

2021 年 8 月 4 日

androidx.exifinterface:exifinterface:1.3.3 已发布。版本 1.3.3 包含这些提交。

Bug 修复

  • 修复子秒相关标签的解析。(aosp/1508143
  • 防止调用 setDataSource 时出现 RuntimeException。(c8e66e9
  • 防止 skipBytes 无限循环。(fdbe88b
  • 捕获来自 MediaMetadataRetriever 的 RuntimeException。(389b21a
  • 添加对 DNG 文件保存属性的支持(3017dbc
  • 用缩略图标签替换非缩略图标签。(e1b916d

版本 1.3.2

版本 1.3.2

2020 年 12 月 2 日

androidx.exifinterface:exifinterface:1.3.2 已发布。版本 1.3.2 包含这些提交。

Bug 修复

  • 允许 SRATIONAL 用于 GPS_LATITUDEGPS_LONGITUDE
  • 增加了对读取/写入 DateTime 标签的辅助格式(2020-01-01 00:00:00)的支持。
  • 调用 saveAttribute() 时阻止临时删除源文件。

版本 1.3.1

版本 1.3.1

2020 年 10 月 14 日

androidx.exifinterface:exifinterface:1.3.1 已发布。版本 1.3.1 包含这些提交。

Bug 修复

  • 修复 saveAttributes 实现以保持 MediaProvider 中的图像数据

版本 1.3.0

版本 1.3.0

2020 年 9 月 16 日

androidx.exifinterface:exifinterface:1.3.0 已发布。版本 1.3.0 包含这些提交。

自 1.2.0 以来的主要更改

  • 扩展了 WebP EXIF 写入支持,包括仅包含 VP8 或 VP8L 块的文件。
  • 移除了不必要的缓冲,这导致大型图像文件出现 OutOfMemory 异常。
  • 移除了 INVALID_DATE_TIME。现在使用 NULL 返回无效的日期时间值。
  • getGpsDateTime 更改为返回 Long.MIN_VALUE 而不是 -1,以表示无效值。

版本 1.3.0-rc01

2020 年 9 月 2 日

androidx.exifinterface:exifinterface:1.3.0-rc01 已发布,自 1.3.0-beta01 以来没有变化。版本 1.3.0-rc01 包含这些提交。

版本 1.3.0-beta01

2020 年 8 月 19 日

androidx.exifinterface:exifinterface:1.3.0-beta01 已发布。版本 1.3.0-beta01 包含这些提交。

新功能

  • 扩展了 WebP EXIF 写入支持,包括仅包含 VP8 或 VP8L 块的文件。

API 变更

  • 移除了 INVALID_DATE_TIME。现在使用 NULL 返回无效日期时间值。

Bug 修复

  • getGpsDateTime 更改为返回 Long.MIN_VALUE 而不是 -1,因为 -1 是一个有效值。
  • 使与日期时间相关的 getter 考虑日期字符串的偏移值 (+/-)。
  • 移除了不必要的缓冲,这导致大型图像文件出现 OutOfMemory 异常。
  • 将默认语言环境设置为美国
  • 将创建临时文件时添加“.tmp”更改为添加前缀。

版本 1.3.0-alpha01

2020 年 2 月 19 日

androidx.exifinterface:exifinterface:1.3.0-alpha01 已发布。版本 1.3.0-alpha01 包含这些提交。

API 变更

  • 添加了新方法:ExifInterface.getGpsDateTime()

版本 1.2.0

版本 1.2.0

2020 年 4 月 1 日

androidx.exifinterface:exifinterface:1.2.0 已发布。版本 1.2.0 包含这些提交。

自 1.1.0 以来的主要更改

  • 增加了对向 PNG 文件添加 EXIF 的支持
  • 增加了对 WebP 文件和仅包含 EXIF 数据流的支持
  • 添加了用于检查是否支持指定 MIME 类型的 API
  • 为偏移时间添加了更多标签:TAG_OFFSET_TIMETAF_OFFSET_TIME_DIGITIZEDTAG_OFFSET_TIME_ORIGINAL

版本 1.2.0-rc01

2020 年 2 月 19 日

androidx.exifinterface:exifinterface:1.2.0-rc01 已发布。版本 1.2.0-rc01 包含这些提交。

Bug 修复

  • 修复了 JPEG 文件包含 XMP 数据时保存不正确的问题

版本 1.2.0-beta01

2019 年 12 月 18 日

androidx.exifinterface:exifinterface:1.2.0-beta01 已发布。此版本包含的提交可在此处找到。

新功能

  • 增加了对向 PNG 文件添加 EXIF 的支持
  • 增加了对从 WebP 文件读取和写入 EXIF 的支持
  • 增加了对仅包含 EXIF 数据流的支持

API 更改

  • 添加了用于检查是否支持指定 MIME 类型的 API
  • 公开了读写 OffsetTime* 标签

Bug 修复

  • 修复了 getAttributeRange() 返回不正确偏移量的问题

版本 1.1.0

版本 1.1.0

2019 年 11 月 20 日

androidx.exifinterface:exifinterface:1.1.0 已发布。版本 1.1.0 包含这些提交

自 1.0.0 以来的重要更改

  • 支持 HEIF 格式和更多 XMP 标签
  • 增加了从 FileFileDescriptor 构建 ExifInterface 对象的功能
  • 添加了更多获取属性的方法:hasAttributegetAttributeBytesgetAttributesRange

版本 1.1.0-rc01

2019 年 10 月 9 日

androidx.exifinterface:exifinterface:1.1.0-rc01 已发布。版本 1.1.0-rc01 包含这些提交

Bug 修复

  • 添加了缺失的格式名称 (IFD) 以防止在 loadAttributes 上出现 ArrayIndexOutOfBoundsException
  • 防止在调用 saveAttributes 时发生异常时删除源文件
  • 修复了覆盖文件后调用 saveAttributes() 时出现异常的问题。

版本 1.1.0-beta01

2019 年 7 月 2 日

androidx.exifinterface:exifinterface:1.1.0-beta01 已发布。此版本中包含的提交可在此处找到。

新功能

  • @NonNull 参数设置 null 时抛出 NullPointerException
  • 支持 XMP 标签

API 更改

  • 添加了更多获取属性信息的方法
  • hasAttributegetAttributeBytesgetAttributesRange

Bug 修复

  • 防止文件描述符内存泄漏

版本 1.1.0-alpha01

2019 年 3 月 13 日

androidx.exifinterface:exifinterface:1.1.0-alpha01 已发布。此版本中包含的完整提交列表可在此处找到。

新功能

  • 支持 HEIF 格式

API 更改

  • 添加了更多 ExifInterface 构造函数
  • 修复了拼写错误:TAG_CAMARA_OWNER_NAME -> TAG_CAMERA_OWNER_NAME

Bug 修复

  • 修复了缩略图图像可能溢出的检查(aosp/748608