尝试获取ExifInterface时,我一直看到未检测到原始图像的错误消息。
ExifInterface exifInterface = new ExifInterface(filepath);
int rotation=exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION,ExifInterface.ORIENTATION_UNDEFINED);
有谁知道造成这种情况的原因是什么?
答案 0 :(得分:3)
我从Uri获取它但我知道文件路径存在
这些陈述是相互矛盾的。 Uri
不是文件。 如果 Uri
的方案是file
,那么然后就可以通过{{获得文件的文件系统路径1}}。如果方案是其他任何,例如getPath()
,则无法获得文件系统路径,因为不需要存在文件。例如,content
Uri
并不意味着Android设备的文件位于http://stackoverflow.com/questions/42930509/exifinterface-jni-raw-image-not-detected-error
。
来自/questions/42930509/exifinterface-jni-raw-image-not-detected-error
的{{1}}(例如,当前最新版本为25.3.0)具有a constructor that takes an InputStream
。在ExifInterface
上创建com.android.support:exifinterface
(通过ContentResolver
,例如getContentResolver()
。在Context
上致电Activity
,提供openInputStream()
(适用于ContentResolver
和Uri
计划)。将file
传递给库的content
构造函数。这同时确保您不会对用户造成安全问题和避免担心获取您要检查的内容的文件系统路径。
答案 1 :(得分:0)
长话短说,请将以下示例应用于您的代码:
Uri uri = Uri.fromFile(f);
// where f of type File
in = context.getApplicationContext().getContentResolver().openInputStream(uri);
// context should refer to your context app
ExifInterface exifInterface = new ExifInterface(in);
// you'll need "exifInterface"
不要忘记关闭输入流
in.close();