невозможно точно отобразить фотографию, так как длина портретного фото всегда меньше ширины - PullRequest
0 голосов
/ 10 апреля 2020

Я использую IDE: AndroidStudio 3.5 и APi Level 28.

Извлечение фотографии с помощью: startActivityForResult (намерение, RQS_IMAGE1) для получения портретной фотографии из кода ниже. Код успешно извлекает портретную фотографию.

Предполагается, что я получил портретную фотографию. Но проблема заключается в следующем: Выбранная портретная фотография Длина всегда меньше ширины

Почему это случилось? с этой проблемой не могу правильно отобразить изображение и не могу нарисовать на нем текст и прочее.

Кто-нибудь сталкивался с этой проблемой? Любое решение для этой проблемы? Спасибо

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?)
{
    super.onActivityResult(requestCode, resultCode, data)

    if (resultCode == Activity.RESULT_OK)
    {
        if (requestCode == RQS_IMAGE1) {

            if (data != null) {

                val contentURI = data!!.data

                try {
                    val bitmap =
                        MediaStore.Images.Media.getBitmap(this.contentResolver, contentURI)


                      val H = bitmap.height
                      val W = bitmap.width

                     //-- portrait 
                    if ( W < H ) {

                      val density = Resources.getSystem().displayMetrics.density

                       runOnUiThread {

                          imgResult.layoutParams.height = 230 * density.toInt()
                          imgResult.layoutParams.width = 135 * density.toInt()
                          imgResult.requestLayout()

                        }

                        runOnUiThread {

                        imgResult!!.setImageBitmap(bitmap)
                        tvPhotoMode.text ="Portrait"
                        tvPhotoSize.text = ""

                        }   

                        btnCreateWP.visibility = View.VISIBLE
                        btnView.visibility = View.VISIBLE


                    }else {

                     val density = Resources.getSystem().displayMetrics.density

                        runOnUiThread {

                            imgResult.layoutParams.height = 200 * density.toInt()
                            imgResult.layoutParams.width = 200 * density.toInt()
                            imgResult.requestLayout()
                        }

                        runOnUiThread {
                            imgResult!!.setImageBitmap(bitmap)
                            tvPhotoMode.text ="Photo mode: Landscape"
                            tvPhotoSize.text ="Please select a Portrait photo"
                        }
                    }

                } catch (e: IOException) {
                    e.printStackTrace()
                    Toast.makeText(this@MainActivity, "Failed!", Toast.LENGTH_SHORT).show()
                }

            }
        }
    }
}
...