问题标签 [android-exifinterface]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
137 浏览

android - 使用 exif 元数据保存图像时 JPEG 损坏

我正在开发一个将位图作为 jpeg 图像保存到外部存储的 Android 应用程序。JPEG 有时会损坏(见下图)。我已经意识到只有在调用 saveExif() 时才会发生损坏(最终)。如果我注释掉 saveExif(),则永远不会发生损坏。这意味着它是由与 EXIF 相关的东西引起的,而不是由压缩过程引起的。我已经使用软件(Bad Peggy)分析了 jpeg,该软件检测到图像由于数据段过早结束而损坏。

知道如何解决吗?

这是我最初保存图像的方式:

这是我在存储 JPEG 后添加 Exif 元数据的方式:

在此处输入图像描述

0 投票
0 回答
57 浏览

android - RedCorners.ExifLibrary.ImageFile 和 ExifInterface GPS 数据始终为零

在 Android 9 上,RedCorners 和 ExifInterface 为所有图库图像和视频返回正确的 GPS 值。现在在 Android 11 设备上尝试我的应用程序,对于捕获的第一个视频,两个库都返回了良好的 GPS 值,但随后我在新设备上更新了 Android 版本。从所有视频和图像的那一刻起,两个库始终返回 0 表示纬度、经度和高度。但这些文件确实有真正的 GPS 值:事实上,谷歌照片在地理地图中正确显示它们!如果我通过电子邮件分享来自 Google 照片的图像并分析该文件,则它具有真正的 GPS 值。如果我通过电子邮件从 Android Gallery 共享图像并分析该文件,它将所有 GPS 值设置为零!我推断谷歌访问了隐藏在图库和其他应用程序中的敏感 GPS 数据。我读过了在 Android Q/10 上无法读取 ExifInterface GPS

  • 我还不能评论 - 并尝试了建议的解决方案:我已将 ACCESS_MEDIA_LOCATION 放入清单中(是否需要额外的权限对话框?)并使用以下代码片段访问文件:

    Android.Net.Uri photoUri = Android.Net.Uri.Parse("file://" + 文件名); photoUri = MediaStore.SetRequireOriginal(photoUri); 变量上下文 = Android.App.Application.Context; 使用 (var stream = context.ContentResolver.OpenInputStream(photoUri)) { if (stream != null) { ExifInterface exif = new ExifInterface(stream); ret = exif.GetLatLong(floats); 双 d = exif.GetAltitude(0.0); 流。关闭();} }

但所有返回值都为零。

0 投票
0 回答
107 浏览

java - 如何在android studio(java)中删除图像的元数据(exif)或上传没有元数据的图像

我正在制作社区应用程序。我使用 okhttp 在我的服务器中上传图像。像这样。

. .

当用户在服务器中下载图像时,它具有日期时间或电话类型等元数据。我想删除或更新元数据,因为它是隐私。

所以,我找到了一些解决方案。

  1. 使用位图类而不是文件类,但质量较低
  2. 使用 exifinterface 类,但我应该控制的情况太多(数据时间、gps、电话类型……)

我想知道解决这个问题的最佳方法是什么。

0 投票
1 回答
94 浏览

android - 将所有 exif 标签从一个 jpeg 复制到另一个

我试图找出将所有 exif 标签从一个 JEPG 复制到另一个的最佳方法。看起来 ExifInterface ( https://developer.android.com/reference/android/media/ExifInterface ) 是我最好的选择。

然而,

  1. 无法获取一张 JPEG 中包含的所有标签。
  2. ExifInterface 类中所有标签的完整列表是私有的/受保护的。

有比将所有 ~100 个标签名称添加到我的班级更好的选择吗?每次我发现 Android 相机正在添加一个我没有考虑到的新 exif 标签时,我真的不想修改代码。

0 投票
0 回答
24 浏览

java - 无法在 ExifInterface 中正确写入 GPSTimeStamp

我正在尝试使用 exif 接口将该属性写为 exif 数据,但我使用的 exif 阅读器永远无法识别定义的数据。

我已经尝试过以下内容:

但他们都没有工作,我没有看到任何其他合适的格式。

设置 GPSTimeStamp 的正确格式是什么?

0 投票
0 回答
186 浏览

android - 无法在 Android 中使用 EXIF 从图像媒体中提取位置(纬度、经度)坐标

我正在尝试从我的 Android 应用程序中的图像媒体中提取位置坐标,但即使图像媒体包含这些详细信息,ExifInterface 也会提供空值。我曾尝试过 Android 9、10 和 11 操作系统模拟器和设备。

我正在使用android-image-picker库在我的应用程序中提供图像选择。我相信这与这个图像库无关。

我还要求ACCESS_MEDIA_LOCATION用于 Android 10 及更高版本的设备,如此所述。我仍然想知道是否是这种情况,那么它应该可以在 Android 9 设备上运行,但到目前为止也没有运气。

请在 Dropbox 中找到图像文件以确保它们保留元数据详细信息。

在调试中,它显示加载在 ExifInterface 对象中的属性,但是当应用程序尝试读取它时,它只返回 null。请查看上述共享图像的调试截图(名称:IMG_20210916_170621.jpg)。同一张图片确实显示了 macOS 预览应用程序以及可用的 Exif元数据阅读器网站中的位置详细信息(参见下面的屏幕截图)。

  • GPS详细信息截图:

全球定位系统详情

  • 调试截图:

调试截图

  • 代码:

我希望我在这里没有误解任何东西。

0 投票
0 回答
23 浏览

android - ExifInterface.TAG_SHUTTER_SPEED_VALUE 真的测量快门速度吗?如果是这样,如何将其转换为更标准的格式?

当使用 Android 相机拍摄照片时,我正在尝试获取相机快门速度。在应用程序创建的包含拍摄照片的图像中使用此指令。

双 vel = exif.getAttributeDouble(ExifInterface.TAG_SHUTTER_SPEED_VALUE, 0);

这给出了一些根据亮度级别而变化的值,例如,现在如果我允许自然光完全通过我的窗户,它提供的值是 6.906,如果我尽可能地不允许它是 3.882。

但另一方面,我正在使用这个应用程序来检查值的正确性,对于这些相同的情况,它提供值 1/120 和 1/12,这似乎是代表快门速度的标准格式,如此处所示

我不知道 ExifInterface.TAG_SHUTTER_SPEED_VALUE 是否正确测量了快门速度,但是在我不知道如何转换的其他比例中,或者它是否以错误的方式执行此操作并且使用它无济于事。

谁能告诉我如何从它给出的值转换为 1/x 格式,或者告诉我它是否在测量任何其他东西?

0 投票
0 回答
10 浏览

android-studio - 从内部存储中获取图像的纬度和经度

是否可以从内部存储中获取图像的 EXIF 元数据?特别是坐标?

我存储了一个图像,并像这样检索它:

当我尝试获取图像的 EXIF

但没有“TAG_GPS_ALTITUDE”

0 投票
0 回答
22 浏览

java - 小米设备中未检索到 EXIF 方向数据

以下代码成功地用于检索使用 Android 相机完成的图像所具有的方向,只要它在 Android 模拟器上执行,它就可以通过 ExifInterface 读取:

但在小米设备中,它总是返回值 0,根据 EXIF 规范,这将是一个保留值。

也许,小米设备不支持从 ExifInterface 获取值,但它能够成功检索以下值:

因此,它可以正确获得最后一个值,但对于 Orientation 来说不是正确的值,这看起来有点奇怪。

这两个数据按如下顺序检索:

所以,我也没有看到任何与图像相关的原因,可能还没有准备好获得它的方向。

如果可能的话,我想坚持使用 ExifInterface 来获取方向,因为经过一些研究,看起来很难确定 Android 设备是否使用后置摄像头,如果它甚至可以做到的话。

0 投票
1 回答
31 浏览

android - EXIF 方向(指南针)标签

我想将罗盘方位/方向添加到图像的 EXIF 元数据中,但是我对其中的许多标签ExifInterface,尤其是要使用的格式感到非常困惑。谁能向我解释一下使用了哪些不同的标签,特别是需要以哪种格式添加信息(例如 132.00 或 132/100 ,...)?

我已经在线阅读了文档,但我仍然感到困惑。谢谢您的帮助!

ExifInterface.TAG_GPS_IMG_DIRECTION

ExifInterface.TAG_GPS_IMG_DIRECTION_REF

ExifInterface.TAG_GPS_DIRECTION_MAGNETIC

ExifInterface.TAG_GPS_DIRECTION_TRUE

ExifInterface.TAG_GPS_DEST_BEARING

ExifInterface.TAG_GPS_DEST_BEARING_REF