繁体   English   中英

从 MediaStore.Images.Media 获取图片方向

[英]Getting picture orientation from MediaStore.Images.Media

我无法正确运行此 function

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))

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM