gpt4 book ai didi

Android 11 从 EXIF 获取图像方向

转载 作者:行者123 更新时间:2023-12-04 23:45:20 27 4
gpt4 key购买 nike

嗨,我有一个 compileSdkVersion 30 和 targetSdkVersion 30 的应用程序。
因为我需要知道图像的方向,所以我写了这些:

val exif = ExifInterface(imageFile.absolutePath)
val orientation = exif.getAttributeInt(
ExifInterface.TAG_ORIENTATION,
ExifInterface.ORIENTATION_NORMAL
)

when (orientation) {
ExifInterface.ORIENTATION_ROTATE_270 -> rotate = 270
ExifInterface.ORIENTATION_ROTATE_180 -> rotate = 180
ExifInterface.ORIENTATION_ROTATE_90 -> rotate = 90
}
但是有一个异常(exception)显示,例如:
java.io,FileNotFoundException:/storage/emulated/0/DCIM/Camera/xxx.jpg: open failed EACCESS(Permission denied)
...
at android.media.ExifInterface.<init>(ExifInterface.java.1389)
我想做的是获取图像并知道它的方向,但我在互联网上找不到任何样本。任何人都可以给我一个提示吗?谢谢!

最佳答案

目标 API 30 的 Foi 项目必须使用支持 ExifInterface:

implementation "androidx.exifinterface:exifinterface:1.3.2"
和带有 InputStream 的 ExifInterface 构造函数:
import androidx.exifinterface.media.ExifInterface

private fun calculateBitmapRotateDegrees(uri: Uri): Float {
var exif: ExifInterface? = null
try {
val inputStream: InputStream? = contentResolver.openInputStream(uri)
inputStream?.run {
exif = ExifInterface(this)
}
} catch (e: IOException) {
e.printStackTrace()
}

exif?.run {
val orientation = getAttributeInt(
ExifInterface.TAG_ORIENTATION,
ExifInterface.ORIENTATION_NORMAL
)

return when (orientation) {
ExifInterface.ORIENTATION_ROTATE_90 -> 90F
ExifInterface.ORIENTATION_ROTATE_180 -> 180F
ExifInterface.ORIENTATION_ROTATE_270 -> 270F
else -> 0F
}
}
return 0F
}

关于Android 11 从 EXIF 获取图像方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64421518/

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