Android裁剪图片为圆形图片

http://blog.csdn.net/kkmike999/article/details/16359713

2013-11-16 19:15  3234人阅读  评论(8)  收藏  举报
[java]  view plain copy
  1. /**
  2. * 转换图片成圆形
  3. *
  4. * @param bitmap
  5. *            传入Bitmap对象
  6. * @return
  7. */
  8. public Bitmap toRoundBitmap(Bitmap bitmap) {
  9. int width = bitmap.getWidth();
  10. int height = bitmap.getHeight();
  11. float roundPx;
  12. float left, top, right, bottom, dst_left, dst_top, dst_right, dst_bottom;
  13. if (width <= height) {
  14. roundPx = width / 2;
  15. left = 0;
  16. top = 0;
  17. right = width;
  18. bottom = width;
  19. height = width;
  20. dst_left = 0;
  21. dst_top = 0;
  22. dst_right = width;
  23. dst_bottom = width;
  24. } else {
  25. roundPx = height / 2;
  26. float clip = (width - height) / 2;
  27. left = clip;
  28. right = width - clip;
  29. top = 0;
  30. bottom = height;
  31. width = height;
  32. dst_left = 0;
  33. dst_top = 0;
  34. dst_right = height;
  35. dst_bottom = height;
  36. }
  37. Bitmap output = Bitmap.createBitmap(width, height, Config.ARGB_8888);
  38. Canvas canvas = new Canvas(output);
  39. final int color = 0xff424242;
  40. final Paint paint = new Paint();
  41. final Rect src = new Rect((int) left, (int) top, (int) right, (int) bottom);
  42. final Rect dst = new Rect((int) dst_left, (int) dst_top, (int) dst_right, (int) dst_bottom);
  43. final RectF rectF = new RectF(dst);
  44. paint.setAntiAlias(true);// 设置画笔无锯齿
  45. canvas.drawARGB(0, 0, 0, 0); // 填充整个Canvas
  46. paint.setColor(color);
  47. // 以下有两种方法画圆,drawRounRect和drawCircle
  48. // canvas.drawRoundRect(rectF, roundPx, roundPx, paint);// 画圆角矩形,第一个参数为图形显示区域,第二个参数和第三个参数分别是水平圆角半径和垂直圆角半径。
  49. canvas.drawCircle(roundPx, roundPx, roundPx, paint);
  50. paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));// 设置两张图片相交时的模式,参考http://trylovecatch.iteye.com/blog/1189452
  51. canvas.drawBitmap(bitmap, src, dst, paint); //以Mode.SRC_IN模式合并bitmap和已经draw了的Circle
  52. return output;
  53. }

参考流程图 &  原理图:

Demo下载:

http://download.csdn.net/detail/kkmike999/6562925

Android裁剪图片为圆形图片相关推荐

  1. Android Glide加载圆形图片、圆角图片,部分圆角图片的使用方法

    Android Glide加载圆形图片.圆角图片,部分圆角图片的使用方法 前言 Gilde圆形图片/头像 Gilde普通圆角图片即四个角都是圆角 Gilde对指定角设置圆角 前言 通过本文,您可以实现 ...

  2. Android --- 自定义ImageView 实现圆形图片

    自定义ImageView实现圆形图片,主要是在onDraw()方法中实现绘制圆形图片,在onMeasure()中测量圆形的半径并设置View的宽高.效果如下图 代码如下 public class Ci ...

  3. Android 心形图片心形ImageView、带边框的的心形图片和圆形图片

    源码地址:心形图片.心形ImageView.圆形图片.圆形ImageView 实际效果如下: 一.思路 1.图片尺寸:加载的图片尺寸不会完全统一,可以是正方形,长方形等,这里不需要考虑正方形,因为一般 ...

  4. Android Glide 加载圆形图片(绝对实用)

    1.导入依赖 implementation 'com.github.bumptech.glide:glide:4.6.1' 2.用Glide加载圆形图片 Glide.with(context).loa ...

  5. android圆角glide,使用Glide加载圆角矩形图片、圆形图片

    Glide是一个功能强大的图片加载库,下面是平常开发中使用到的一些功能,基于Glide-4.X版本的用法 Glide-github地址 Glide jar包下载地址 加载圆形图片:RequestOpt ...

  6. Android Glide加载圆形图片,设置圆形边框

    Glide加载图片,Glide可以很方便的实现圆形加载并且也还可以设置变色边框. 关于Glide的加载在这里不详细说了,主要说一下自定义BitmapTransformation来实现圆形图片加载 st ...

  7. 使用Glide加载圆角矩形图片、圆形图片

    Glide是一个功能强大的图片加载库,下面是平常开发中使用到的一些功能,基于Glide-4.X版本的用法 Glide-github地址 Glide jar包下载地址 加载圆形图片: RequestOp ...

  8. Glide加载常用类型图片(带白色边框的圆形图、圆角矩形图片、圆形图片)

    一:依赖包: Glide_github implementation 'com.github.bumptech.glide:glide:4.8.0' annotationProcessor 'com. ...

  9. Python 将矩形图片转为圆形图片

    使用PIL库将矩形图片转为原型图片 from PIL import Image, ImageDraw, ImageFilterdef crop_max_square(pil_img):return c ...

最新文章

  1. Codeforces Round #409 (Div. 2) C Voltage Keepsake(二分)
  2. Pairs Forming LCM LightOJ - 1236[数论+组合计数]
  3. Intellij_idea-15 常用快捷键
  4. js类型判断(数字、0、、undefined、null)
  5. UNIX环境高级编程 第11章 线程
  6. java 中文乱码的解决方法
  7. SQLi-LABS Page-4 (Challenges) Less-54-Less-65
  8. JBoss Tools 4.5.3.Final安装及下载
  9. 发动机冒黑烟_发动机冒黑烟常见的24个原因和解决方法
  10. 不租服务器,自建个人商业网站(如何购买域名)
  11. LollipopGo分布式架构--DB反向代理服务器设计
  12. 日期函数DATEDIFF() 计算日期之差
  13. 公众号前端开发配置流程
  14. python实现离散型变量分组统计
  15. OpenCV + CPP 系列(卅三)图像特征提取(Harris角点检测、Shi-Tomasi角点检测、自定义角点检测)
  16. 计算机显示字体怎么设置,电脑字体太小怎么调,教您怎样更改电脑界面的字体大小...
  17. 强化学习1-思想及分类
  18. linux无人值守批量安装系统
  19. 《被讨厌的勇气》——第四夜阅读摘记
  20. 知识进步的阶梯--书

热门文章

  1. VA番茄助手支持vs2010-vs2017
  2. CTS测试框架 -- V1版本
  3. MAC 电脑怎么找到 host 文件
  4. 桌面排版软件Scribus v1.5.6.1软件流程笔记
  5. LNMP平台搭建-Centos6.x
  6. rrweb + vue用户屏幕行为录制
  7. 两个线程调用同一个对象的同一个方法
  8. 人大金仓创建(初始化)数据库
  9. pythonlive2d_Ren'Py引擎从入门到放弃(支线6)——还在探索阶段的Live2D
  10. 【神经网络】11行Python代码实现的神经网络