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
    }
  • 相关阅读:
    hihoCoder #1078 : 线段树的区间修改
    hihoCode r#1077 : RMQ问题再临-线段树
    hihoCoder #1070 : RMQ问题再临
    hihoCoder #1068 : RMQ-ST算法(模板)
    LeetCode Valid Sudoku 有效数独
    150 Evaluate Reverse Polish Notation 逆波兰表达式求值
    149 Max Points on a Line 直线上最多的点数
    148 Sort List 链表上的归并排序和快速排序
    147 Insertion Sort List 链表插入排序
    146 LRU Cache 最近最少使用页面置换算法
  • 原文地址:https://www.cnblogs.com/liunx1109/p/14286018.html
Copyright © 2011-2022 走看看