Exifinterface
最近更新时间 | 稳定版 | 候选版 | 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 变更
- 指明
setGpsInfo
的location
参数为@Nullable
,并且传递null
将导致 No-Op。If924c、b/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-mode
(I5cd0f、b/326456246) - 移除了手动说明对新平台 API 的访问权限,因为当将 R8 与 AGP 7.3 或更高版本(例如 R8 版本 3.3)搭配使用时,系统会通过 API 建模自动执行此操作;当使用 AGP 8.1 或更高版本(例如 D8 版本 8.1)时,系统会针对所有 build 自动执行此操作。建议不使用 AGP 的客户更新到 D8 8.1 或更高版本。如需了解详情,请参阅这篇文章。(If6b4c、b/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_LATITUDE
和GPS_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_TIME
、TAF_OFFSET_TIME_DIGITIZED
和TAG_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 标记
- 新增对于从
File
或FileDescriptor
构建ExifInterface
对象的支持 - 添加了更多获取属性的方法:
hasAttribute
、getAttributeBytes
和getAttributesRange
版本 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 变更
- 添加了更多获取属性信息的方法
hasAttribute
、getAttributeBytes
和getAttributesRange
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)