gpt4 book ai didi

安卓:ExifInterface 数据为空

转载 作者:行者123 更新时间:2023-11-30 01:20:30 26 4
gpt4 key购买 nike

我正在尝试从画廊的图像中提取 Exif 数据,如下所示:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (data.getData() != null) {
Uri uri = data.getData();
String file = uri.getPath();

try {

ExifInterface exif = new ExifInterface(file);
Integer property = exif.getAttributeInt(ExifInterface.TAG_IMAGE_WIDTH, 9); //is always 0
Log.d("width", property.toString());
String date = exif.getAttribute(ExifInterface.TAG_GPS_DATESTAMP); //is always null

} catch (Exception e) {
e.printStackTrace();
}

}

}

但是所有的值要么为空,要么为 0。正确的做法是什么?

最佳答案

String file = uri.getPath();

这在大多数情况下是无用的。充其量,如果 Uri有一个 file方案,该路径将是对文件系统上文件的有效引用,但您可能无权访问它。它对任何其他方案都是完全无用的,大多数时候你会有一个 content 的方案。 .

你有两个选择:

  1. 使用不同的 EXIF 解析器,一个可以处理 InputStream 的解析器.在这种情况下,您可以使用 ContentResolveropenInputStream()得到一个InputStream关于 Uri 指向的内容. AOSP 中的 Mms 应用程序中的 EXIF 代码是我为此使用的代码。

  2. 使用 ContentResolveropenInputStream()得到一个InputStream关于 Uri 指向的内容.然后,使用 Java I/O 将这些字节复制到您控制的某个文件中。然后,使用您的 ExifInterface使用新创建的文件进行编码。

关于安卓:ExifInterface 数据为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37188498/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com