android - 如何创建扩展函数来调整 Kotlin 中的图像大小?
问题描述
我正在尝试制作一个扩展函数以在不同的类中使用它。我正在尝试创建它,但它不起作用。任何人都可以解决这个问题。
这是我的扩展:
fun resize.toBitmap(image: Bitmap, maxWidth: Int, maxHeight: Int): Bitmap {
var image = image
return if (maxHeight > 0 && maxWidth > 0) {
val width = image.width
val height = image.height
val ratioBitmap = width.toFloat() / height.toFloat()
val ratioMax = maxWidth.toFloat() / maxHeight.toFloat()
var finalWidth = maxWidth
var finalHeight = maxHeight
if (ratioMax > ratioBitmap) {
finalWidth = (maxHeight.toFloat() * ratioBitmap).toInt()
} else {
finalHeight = (maxWidth.toFloat() / ratioBitmap).toInt()
}
image = Bitmap.createScaledBitmap(image, finalWidth, finalHeight, true)
image
} else {
image
}
这就是我尝试达到它的方式:
var bitmap = Bitmap.createBitmap(drawingCacheBitmap)
bitmap = resize(bitmap, 200, 100)
解决方案
尝试这个
fun Bitmap.resizeImage(image: Bitmap, maxWidth: Int, maxHeight: Int): Bitmap {
val width = image.width
val height = image.height
val scaleWidth = maxWidth.toFloat() / width
val scaleHeight = maxHeight.toFloat() / height
val matrix = Matrix()
matrix.postScale(scaleWidth, scaleHeight)
// Create a New bitmap
val resizedBitmap = Bitmap.createBitmap(
image, 0, 0, width, height, matrix, false)
resizedBitmap.recycle()
return resizedBitmap
}
并像这样调用这个扩展函数,
bitmap = resizeImage(bitmap, 200, 100)
推荐阅读
- java - 集成测试异步控制器
- javascript - 如何在 AG-Grid Header 中放置大文本?
- c# - ASP.NET MVC 视图需要将选定的下拉列表和日历日期传递给模型
- solr - SOLR 子查询结果过滤器
- javascript - 如何在 Reactjs 中将数据从子组件传递到父组件?
- javascript - 按另一个数组排序数组,如 GroupBy NodeJs
- rest - 如何使用 Oanda 的 API 在一个 GET 请求中获取多个仪器蜡烛
- intellij-idea - IntelliJ IDEA 2020 对 webdriverio 选择器的支持
- python - 在时间戳熊猫之间进行选择
- python - 迭代预训练模型的 Conv2D 层