Как повернуть перевернутую пейзажную фотографию обратно вверх по правой пейзажной фотографии - PullRequest
0 голосов
/ 13 апреля 2020

предположим, что это нормальный пейзаж Фотография имеет вертикальный треугольник. Но отображение фотографий в ImageView показывает Перевернутая Пейзажная фотография с перевернутым треугольником

     --------
     \      /
      \    /
        \ /

Это можно сделать с помощью ExifInterface, чтобы определить, есть ли у Пейзажа поворот.

Предполагается, что эта фотография обнаружена. с вращением

проблема:

Как перевернуть перевернутый треугольник Пейзажное фото в Пейзажное фото с правым верхним треугольником? или как повернуть эту перевернутую пейзажную фотографию обратно в ее обычное вертикальное положение, используя холст Перед рисованием текста на нем?

вот мой код:

private fun ScrapImgView(strName:String,strAddr:String,strCtcName:String){

    val bitmap1 = (imgViewResult.getDrawable() as BitmapDrawable).getBitmap()

    var h = bitmap1.height
    var w = bitmap1.width

    //-1- create Canvas with size (w, h , Bitmap.conf)

    val newbitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888)
    val canvas = Canvas(newbitmap)

    //-- draw background color
    canvas.drawColor(Color.GREEN)

    //-- Assumed that this Landscape photo is detected with rotation

    if (b_Rotate180){

     ??? How to use canvas to draw back to Upright Triangle

    }else{

        canvas.drawBitmap(bitmap1, 0F, 0F, null)

    }


    //--3 : rec (x,y, width, height)
    val rectangle = Rect(10, 540, 1100, 1000)

    //-- create color for text
    val paint = Paint()
    paint.isAntiAlias()
    paint.setColor(ContextCompat.getColor(applicationContext,R.color.royalblue))     
    paint.alpha = 126

    val paintText = Paint(Paint.ANTI_ALIAS_FLAG)
    paintText.setTextSize(30F)
    paintText.setColor(ContextCompat.getColor(applicationContext,R.color.Lightgray))
    paintText.setStyle(Paint.Style.FILL)


    //-- Draw the Rectangle
    canvas.drawRect(rectangle, paint)

    val rectText = Rect()
    paintText.getTextBounds(strName, 0, strDisplayAllText.length, rectText)


    canvas.drawText(
        strName,
        20F, 630F, paintText
    )

    canvas.drawText(
        strAddr,
        20F, 720F, paintText
    )

    canvas.drawText(
        strCtcName,
        20F, 810F, paintText
    )


    runOnUiThread {

        imgResult.setImageBitmap(newbitmap)
    }

}
...