Wiki
2016-04-22 22:00
218 查看
/** * 头像圆形裁剪 * * @param source * @return */ public static Bitmap circleBitMap(Bitmap source) { final Paint paint = new Paint(); //抗锯齿效果 int width = source.getWidth(); paint.setAntiAlias(true); //指定大小bitmap Bitmap target = Bitmap.createBitmap(width, width, Bitmap.Config.ARGB_8888); //根据target生成一个画布 Canvas canvas = new Canvas(target); //在画布上画了一个圆 //参数CX,cy-->确定绘制圆的圆心点 //半径参数 //画笔 canvas.drawCircle(width / 2, width / 2, width / 2, paint); //这句话是关键: //分析:我们以一张图片作为画布,在上面画了一个圆-->画图展示-->"这时候,绘制的圆和图片本身就出现了一个圆形的交集图案" //setXfermode:设置当绘制的图像出现相交情况时候的处理方式的,它包含的常用模式有哪几种 //PorterDuff.Mode.SRC_IN 取两层图像交集部门,只显示上层图像,注意这里是指取相交叉的部分,然后显示上层图像 //PorterDuff.Mode.DST_IN 取两层图像交集部门,只显示下层图像 paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); //使用设置了setXfermode方案的paint绘制图像 canvas.drawBitmap(source, 0, 0, paint); return target; }根据传入的source bitmap创建一个空(内容为空,宽度和高度为source .getWidth)的bitmap对象(target bitmap) ,那么我们要怎么样才能使target bitmap对象的内容不为空,为我们想要的内容呢?这时候就需要我们以这个target bitmap对象为模板给它搞一个同等大小的画布铺在上面准备作画(即以target bitmap为模板创建一个画布对象),创建了好了画布,我们就可以在这个画布上画东西了,先在画布上画一个圆,然后设置Xfermode模式,再在画布上画source
bitmap,这样,我们的target bitmap就有内容了,并且它的内容按照设置Xfermode模式的形式来显示。
相关文章推荐
- E矿大获取密码测试
- 在windows下快速搭建web.py开发框架方法
- poj2524 Ubiquitous Religions
- Android 使用HttpGet进行登录
- Permutations
- JAVA动态规划(四)--根据给定0和1的个数,求字典序排在第K位的数【微软笔试题】
- 几年工作经验的我,到底应该具备哪些能力
- 团队项目
- 类图
- 团队项目-个人博客-典型用户分析
- JSP基础
- LeetCode208 Implement Trie (Prefix Tree) Java
- C++第4次作业
- 典型用户
- 团队项目-个人博客-4.22
- 4月13日作业 外包管理、需求管理、组织级项目与大型项目管理
- Android 读取网络数据
- POJ 3037 Skiing(Dijkstra)
- 字符翻转
- POJ 3037 Skiing(Dijkstra)