zoukankan      html  css  js  c++  java
  • Bitmap数据处理

    把直角图片改为圆角,通过改roundPx这个参数
    fun toRoundBitmap(bitmap: Bitmap): Bitmap? {
    var width = bitmap.width
    var height = bitmap.height
    val roundPx: Float
    val left: Float
    val top: Float
    val right: Float
    val bottom: Float
    val dst_left: Float
    val dst_top: Float
    val dst_right: Float
    val dst_bottom: Float
    if (width <= height) {
    roundPx = width / 2.toFloat()
    left = 0f
    top = 0f
    right = width.toFloat()
    bottom = width.toFloat()
    height = width
    dst_left = 0f
    dst_top = 0f
    dst_right = width.toFloat()
    dst_bottom = width.toFloat()
    } else {
    roundPx = height / 2.toFloat()
    val clip = (width - height) / 2.toFloat()
    left = clip
    right = width - clip
    top = 0f
    bottom = height.toFloat()
    width = height
    dst_left = 0f
    dst_top = 0f
    dst_right = height.toFloat()
    dst_bottom = height.toFloat()
    }
    val output = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
    val canvas = Canvas(output)
    val color = -0xbdbdbe
    val paint = Paint()
    val src = Rect(left.toInt(), top.toInt(), right.toInt(), bottom.toInt())
    val dst = Rect(dst_left.toInt(), dst_top.toInt(), dst_right.toInt(), dst_bottom.toInt())
    val rectF = RectF(dst)
    paint.isAntiAlias = true // 设置画笔无锯齿
    canvas.drawARGB(0, 0, 0, 0) // 填充整个Canvas
    paint.color = color

    // 以下有两种方法画圆,drawRounRect和drawCircle
    // canvas.drawRoundRect(rectF, roundPx, roundPx, paint);// 画圆角矩形,第一个参数为图形显示区域,第二个参数和第三个参数分别是水平圆角半径和垂直圆角半径。
    canvas.drawCircle(roundPx, roundPx, roundPx, paint)
    paint.xfermode = PorterDuffXfermode(PorterDuff.Mode.SRC_IN) // 设置两张图片相交时的模式,参考http://trylovecatch.iteye.com/blog/1189452
    canvas.drawBitmap(bitmap, src, dst, paint) //以Mode.SRC_IN模式合并bitmap和已经draw了的Circle
    return output
    }
  • 相关阅读:
    第七十天 how can I 坚持
    第六十九天 how can I 坚持
    第六十八天 how can I 坚持
    第六十七天 how can I 坚持 (补昨天)
    第六十六天 how can I 坚持··
    第六十五天 how can I 坚持
    第六十四天 how can i 坚持
    第六十三天 how can I 坚持
    MyEclipse10 中的两种FreeMarker插件的安装与配置
    画板社交工具开发分享——HTML5 canvas控件、PHP、社交分享学习(四)
  • 原文地址:https://www.cnblogs.com/liunx1109/p/14286018.html
Copyright © 2011-2022 走看看