android - 使用来自 Uri - Android 的完整信息/详细信息保存来自 Google 照片的图像
问题描述
我正在使用 ExifInterface,它需要图像路径来从 Uri 获取纬度/经度等信息。我可以从 Uri 获取保存在设备上的图像的路径并将其发送到 ExifInterface 以获取详细信息。
但是,这不适用于 Google 相册云上的图像。从图库中选择时,照片会自动下载,但 ExifInterface 无法检索任何信息,因为 cursor.getString(index) 为空。
所以我尝试将图像保存到存储中,如下所述:Getting path from Uri from Google Photos app
然后,当我使用 Google 照片应用程序打开保存的文件时,我看不到位置详细信息。但是,如果我通过单击“保存”从 Google 照片应用程序手动保存图像,则该图像会显示位置详细信息。
无论如何保存图像文件时保存图像细节?
解决方案
我正在使用 ExifInterface,它需要图像路径来从 Uri 获取纬度/经度等信息。
您可以使用ContentResolver
及其方法来openInputStream()
获取. 然后,将其传递给构造函数。InputStream
Uri
InputStream
ExifInterface
请注意,图像无需为 JPEG 格式(EXIF 标签可用)或 JPEG 图像具有地理标签。
从图库中选择时,照片会自动下载,但 ExifInterface 无法检索任何信息,因为 cursor.getString(index) 为空。
没有要求 aUri
指向一条内容,如照片,来支持任何涉及 a 的内容Cursor
。
所以我尝试将图像保存到存储中,如下所述:Getting path from Uri from Google Photos app
您可以提供InputStream
toExifInterface
并使用更少的代码获得相同的结果。
然后,当我使用 Google 照片应用打开保存的文件时,我看不到位置详细信息
可能Uri
指向的内容缺少您要查找的 EXIF 标记。也许无论出于何种原因,谷歌照片都会单独保留这些信息。这取决于创建 Google 照片的开发人员。
问题也可能在于您如何手动测试它。
无论如何,首先通过InputStream
直接传递 toExifInterface
并以这种方式检查 EXIF 标签。也许你会得到更好的结果。
推荐阅读
- docker - 在 docker 容器内使用 FIO 时如何绕过内存缓存?
- javascript - Wasm-bindgen:访问 wasm 实例的内存缓冲区(来自 JS)
- pine-script - Pine 脚本三元运算符报错
- flutter - Flutter - TextFormField textAlign 不会将对齐应用于错误消息
- java - 在 Java 8 中运行更新的代码 - 或者 - 在 Mac OS 10.12.6 中为 Eclipse 更新 Java?
- python - 如何在python中获得两个数字的因子?
- r - 如何在r中查看类似表格样式的列表
- azure-pipelines - Azure 发布管道内联 powershell 脚本可重用性
- c# - DataTable 获得的结果少于存储过程获得的结果
- android - 创建结算帐户后广告未加载错误