Я сделал встроенную функцию уменьшения размера растрового изображения и создал другую.
private fun Bitmap.limitSizeTo(maxSize: Int): Bitmap {
var width = this.width
var height = this.height
val bitmapRatio = width.toFloat() / height.toFloat()
if (bitmapRatio > 1) {
width = maxSize
height = (width / bitmapRatio).toInt()
} else {
height = maxSize
width = (height * bitmapRatio).toInt()
}
return Bitmap.createScaledBitmap(this, width, height, true)
}
Как есть:
var resizedBitmap = bitmap.limitSizeTo(100)
doSomething(resizedBitmap)
Быть:
bitmap.limitSizeTo(100)
doSomething(bitmap)
То, что я пытался, но не компилировал, это:
private fun Bitmap.limitSizeTo(maxSize: Int): Bitmap {
var width = this.width
var height = this.height
val bitmapRatio = width.toFloat() / height.toFloat()
if (bitmapRatio > 1) {
width = maxSize
height = (width / bitmapRatio).toInt()
} else {
height = maxSize
width = (height * bitmapRatio).toInt()
}
this = Bitmap.createScaledBitmap(this, width, height, true)
}
Я думаю, что код "быть" более крутой, не так ли?
Кто-нибудь знает, как это сделать?