Я использую 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()
}
}
}
}
}