Exifinterface

读取和写入图片文件 EXIF 标记。
最近更新时间 稳定版 候选版 Beta 版 Alpha 版
2024 年 11 月 13 日 1.3.7 - - 1.4.0-alpha01

声明依赖项

如需添加 Exifinterface 的依赖项,您必须将 Google Maven 制品库添加到项目中。如需了解详情,请参阅 Google 的 Maven 制品库

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

Groovy

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

Kotlin

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

如需详细了解依赖项,请参阅添加 build 依赖项

反馈

您的反馈将帮助我们改进 Jetpack。如果您发现了新问题,或对此库有任何改进建议,请告诉我们。创建新问题前,请先查看此库中的现有问题。您可以点击星标按钮,为现有问题投票。

创建新问题

如需了解详情,请参阅问题跟踪器文档

版本 1.4

版本 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 将导致 No-Op。If924cb/236484611

bug 修复

  • 在遇到无效的 IFD 偏移量后继续解析 (b/264729367)。
  • 处理在 Exif 数据之前错误地包含 JPEG APP1 标记的 WebP 图片 (b/281638358)。
  • 确保具有单独 XMP 分段的 JPEG 中的 XMP 更改由 saveAttributes() 存储到同一单独的 XMP 分段中,而不是写入 XMP 规范不支持且许多工具都找不到的 TIFF/Exif 标记 700。
  • 避免在保存时将单独片段中的 XMP 数据复制到 TIFF 预览目录中 (b/309843390)。
  • 提高了从双精度转换为有理数的准确性。(b/312680558)。
  • 接受“旧版”有理标记的“有理”格式 (x/y),这些标记会在从 getAttribute 返回时自动转换为十进制格式 (b/312680558)。setAttribute
  • 确保向不含 XMP 的 JPEG 图片添加的 XMP 数据会写入单独的段,如 XMP 规范所指定。据文档记录,ExifInterface 会优先使用 JPEG 图片中的 Exif 700 标记中的 XMP(违反规范),因此在读取/写入包含现有 XMP 数据的图片时,系统会保留此行为。
  • 修复了在写入高度或宽度大于 8191 像素的 WebP 图片时输出损坏的问题 (b/342697059)。
  • 此库现在使用 JSpecify nullness annotations,即类型使用。Kotlin 开发者应使用以下编译器参数来强制执行正确的用法:-Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-modeI5cd0fb/326456246
  • 移除了手动说明对新平台 API 的访问权限,因为当将 R8 与 AGP 7.3 或更高版本(例如 R8 版本 3.3)搭配使用时,系统会通过 API 建模自动执行此操作;当使用 AGP 8.1 或更高版本(例如 D8 版本 8.1)时,系统会针对所有 build 自动执行此操作。建议不使用 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 修复

  • 修复了解析与 secsec 相关的标记时出现的问题。(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 修复

  • 允许 GPS_LATITUDEGPS_LONGITUDE 使用 SRATIONAL
  • 增加了针对 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 返回无效的 DateTime 值。
  • 对于无效值,让 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 返回无效的 DateTime 值。

bug 修复

  • getGpsDateTime 返回 Long.MIN_VALUE 而不是 -1,因为 -1 是有效值
  • 让与 DateTime 相关的 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 数据的流
  • 添加了一个 API,用于检查是否支持指定的 MIME 类型
  • 为偏移时间添加了更多标记: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 数据的情况下,JPEG 无法正确保存的问题

版本 1.2.0-beta01

2019 年 12 月 18 日

发布了 androidx.exifinterface:exifinterface:1.2.0-beta01版本 1.2.0-beta01 中包含这些提交内容

新功能

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

API 变更

  • 添加了一个 API,用于检查是否支持指定的 MIME 类型
  • 公开了读取和写入 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)