转发https://blog.csdn.net/yangyahuiguo/article/details/52253401?utm_source=blogxgwz2
1.中央截取正方形,可设置圆角

        Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.testimg);//设置bitmap.getWidth()可以获得圆形Bitmap bitmap1 = ClipSquareBitmap(bitmap,200,bitmap.getWidth());imageView.setImageBitmap(bitmap1);
    public static Bitmap ClipSquareBitmap(Bitmap bmp, int width, int radius) {if (bmp == null || width <= 0)return null;//如果图片比较小就没必要进行缩放了/*** 把图片进行缩放,以宽高最小的一边为准,缩放图片比例* */if (bmp.getWidth() > width && bmp.getHeight() > width) {if (bmp.getWidth() > bmp.getHeight()) {bmp = Bitmap.createScaledBitmap(bmp, (int) (((float) width) * bmp.getWidth() / bmp.getHeight()), width, false);} else {bmp = Bitmap.createScaledBitmap(bmp, width, (int) (((float) width) * bmp.getHeight() / bmp.getWidth()), false);}} else {width = bmp.getWidth() > bmp.getHeight() ? bmp.getHeight() : bmp.getWidth();Log.d("zeyu","宽" + width + ",w" + bmp.getWidth() + ",h" + bmp.getHeight());if (radius > width) {radius = width;}}Bitmap output = Bitmap.createBitmap(width, width, Bitmap.Config.ARGB_8888);Canvas canvas = new Canvas(output);//设置画笔全透明canvas.drawARGB(0, 0, 0, 0);Paint paints = new Paint();paints.setColor(Color.WHITE);paints.setAntiAlias(true);//去锯齿paints.setFilterBitmap(true);//防抖动paints.setDither(true);//把图片圆形绘制矩形if (radius <= 0)canvas.drawRect(new Rect(0, 0, width, width), paints);else //绘制圆角canvas.drawRoundRect(new RectF(0, 0, width, width), radius, radius, paints);// 取两层绘制交集。显示前景色。paints.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));Rect rect = new Rect();if (bmp.getWidth() >= bmp.getHeight()) {rect.set((bmp.getWidth() - width) / 2, 0, (bmp.getWidth() + width) / 2, width);} else {rect.set(0, (bmp.getHeight() - width) / 2, width, (bmp.getHeight() + width) / 2);}Rect rect2 = new Rect(0, 0, width, width);//第一个rect 针对bmp的绘制区域,rect2表示绘制到上面位置canvas.drawBitmap(bmp, rect, rect2, paints);bmp.recycle();return output;}

2.这种方式也可获得圆形,但是不是以中央为圆心切的,图像偏上方

    public static Bitmap circleBitmap(Bitmap source) {int width = source.getWidth();Bitmap bitmap = Bitmap.createBitmap(width, width, Bitmap.Config.ARGB_8888);Canvas canvas = new Canvas(bitmap);Paint paint = new Paint();paint.setAntiAlias(true);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));canvas.drawBitmap(source, 0, 0, paint);return bitmap;}

ImageView设置成圆形相关推荐

  1. 【HTML5】网页实用技巧3:将方形图片设置成圆形后,添加圆形虚线边框

    需要实现的效果:将原本是方形的图片,变成圆形,且添加一个圆形边框 实现思路: ①制作一个正方形div盒子,将图片放在div盒子里 ②将div盒子,设置边框样式 ③将盒子设置成圆形(利用 border- ...

  2. iOS-方形图片设置成圆形图片

                                                         创建一个方形的button,添加方形的背景图片,设置显示为圆形 self.view.backg ...

  3. ios 将矩形图片裁剪成圆形图片

    在ios中将一个正方形的图片裁剪成圆形的图片是一件非常容易的事情, 直接设置 imageView.layer.cornerRadius 这个属性, 再设置 imageView.clipsToBound ...

  4. 调用系统相机和相册,并且裁剪成圆形图片(解决6.0,7.0,8.0版本问题)

    之前写过一篇博客,那篇博客对7.0手机裁剪图片的问题没有进行解决,现在对之前的那篇博客进行补充,解决了Android6.0,7.0,8.0版本问题,不仅可以调用相册,相机,还可以将图片保存到本地,并且 ...

  5. UIImageView裁剪成圆形的方法

    我知道的实现方法有三种. 1.通过image mask来操作,需要添加mask目标图片. 2.通过imageview的layer来操作 如下代码 1 2 3 4 5 6 7 8 9 10 UIImag ...

  6. Android入门--实现选择并编辑图片设置成头像

    在很多时候需要更换头像或者选择图片,所以这里总结下实现选择并编辑图片然后设置成头像的方法,下面开始: 整体结构如下: 创建项目,命名为ChooseImage_test 创建完成,在drawable-h ...

  7. 如何把一个图片裁剪成圆形

    1.有的时候,为了工作的需要,需要吧图片裁剪成圆形.我们一般有两种思路:让承载image的ImageView变成圆形,或者把图片变成圆形. A:通过image的mask 来操作.需要添加mask目标图 ...

  8. Android实现本地上传图片并设置为圆形头像

    我们在做项目的时候会用到圆形的图片,比如用户头像,类似QQ.用户在用QQ更换头像的时候,上传的图片都是矩形的,但显示的时候确是圆形的.那么这是如何实现的呢,下面我们就来探讨下吧. 先从本地把图片上传到 ...

  9. WPF 中使用附加属性,将任意 UI 元素或控件裁剪成圆形(椭圆)

    原文:WPF 中使用附加属性,将任意 UI 元素或控件裁剪成圆形(椭圆) 版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可.欢迎转载.使用.重新发布,但务必保 ...

最新文章

  1. EXCEL打开CSV文件乱码的解决方法
  2. unity打包模型存在的一个问题
  3. 1.15 总结-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
  4. linux FTP服务器访问权限的问题
  5. 在服务器上处理gis文件,云服务器处理gis
  6. 现在小餐厅的推广视频
  7. JVM面试重点总结(二)——垃圾收集器(GC)与内存分配策略
  8. IT小天博客APP版本
  9. Nginx#Nginx-Typora笔记
  10. 趋势客户端修改服务器地址,趋势杀毒软件服务器端更改ip
  11. 微服务部署之蓝绿发布、滚动发布、灰度发布区别与特点!
  12. 《从零开始做运营》心得
  13. 论文解读-CenterNet:Keypoint Triplets for Object Detection
  14. Java 安全 后端返回文件流
  15. Start booting from USB device boot failed 解决办法(老机器问题)
  16. 【分层强化学习】HAC论文及代码
  17. finally、catch和return,你真的会用吗?
  18. 云服务器+ngrok搭建内网穿透服务(只有公网ip无域名)
  19. 化工行业供应商协同管理系统:助力企业打造良好营商环境,提升运营效率
  20. teamview不能用的解决方法

热门文章

  1. steam饥荒 离线服务器_如何使Steam的离线模式正常工作
  2. python中英文半角还是全角_如何理解python3的unicode,以及全角半角转换
  3. 武学之精要在内外兼修
  4. 安卓通过InputFilter限制EditText输入
  5. java输出钻石_java - 用Java打印钻石形状 - 堆栈内存溢出
  6. android之aidl进程间通讯数据传输
  7. 【工程实践】python 字典排序
  8. 一款好用的Markdown文档编辑器:Typora
  9. 怎么让 Linux 进程在后台运行
  10. 健身工作室活不过2年?健身房捷径管理系统成为破局关键