【问题标题】:Getting picture orientation from MediaStore.Images.Media从 MediaStore.Images.Media 获取图片方向
【发布时间】:2020-04-07 17:02:21
【问题描述】:

我无法正确运行此功能

private fun getImageOrientation(): Int {
        val imageColumns = arrayOf(MediaStore.Images.Media._ID, MediaStore.Images.ImageColumns.ORIENTATION)
        val imageOrderBy = MediaStore.Images.Media._ID + " DESC"
        val cursor: Cursor? = contentResolver.query(photoURI!!, imageColumns, null, null, null)
        if (cursor!!.moveToFirst()) {
            val orientation: Int = cursor.getInt(cursor.getColumnIndex(MediaStore.Images.ImageColumns.ORIENTATION))
            cursor.close()
            return orientation
        } else {
            return 0
        }
    }

photoURI 是包含从相机拍摄的图片的 URI 的变量。 应用程序导致此错误

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: it.polito.phony.lab1, PID: 3886
    java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent {  }} to activity {it.polito.phony.lab1/it.polito.phony.lab1.EditProfileActivity}: android.database.CursorIndexOutOfBoundsException: Requested column: -1, # of columns: 0
        at android.app.ActivityThread.deliverResults(ActivityThread.java:4053)
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:4096)
        at android.app.ActivityThread.-wrap20(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1516)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6077)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
     Caused by: android.database.CursorIndexOutOfBoundsException: Requested column: -1, # of columns: 0
        at android.database.MatrixCursor.get(MatrixCursor.java:66)
        at android.database.MatrixCursor.getInt(MatrixCursor.java:269)
        at android.database.CursorWrapper.getInt(CursorWrapper.java:122)
        at it.polito.phony.lab1.EditProfileActivity.getImageOrientation(EditProfileActivity.kt:193)
        at it.polito.phony.lab1.EditProfileActivity.onActivityResult(EditProfileActivity.kt:171)
        at android.app.Activity.dispatchActivityResult(Activity.java:6915)
        at android.app.ActivityThread.deliverResults(ActivityThread.java:4049)

排队

val orientation: Int = cursor.getInt(cursor.getColumnIndex(MediaStore.Images.ImageColumns.ORIENTATION))

【问题讨论】:

    标签: android camera cursor indexoutofboundsexception mediastore


    【解决方案1】:

    您收到此错误的原因是光标不包含 ORIENTATION 列。

    这可能是因为您没有查询正确的 URI。

    请确保在发送 MediaStore.EXTRA_OUTPUT 以捕获图像以及为查询设置图片URI 时都调用Uri.fromFile(File(path))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-18
      • 1970-01-01
      • 2016-10-11
      • 2020-08-16
      • 1970-01-01
      相关资源
      最近更新 更多