两种方法生成圆形图片

现在常见的app头像都是采用圆形的图片,但是原始图片通常都是矩形的。所以需要处理一下。

一共有两种方法,可以让图片看上去是圆形的。注意,仅仅是看上去。本质上,圆形以外的区域实际上是填充了透明像素。

第一种方法很简单,只需要几行代码:

UIImageView* imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"canna"]];
imageView.layer.masksToBounds = YES;
imageView.layer.cornerRadius = imageView.frame.size.width * 0.5;

这方法的好处是简单易行,但是也有缺点,就是性能较差,所以这不是通常选择的方案。

第二种方案,利用圆形路径对图像进行裁剪。这种方法性能较好,所以这种方案比较常用。

这个步骤比较多,但是总体还是比较简单,只是对UIImage类做了一个扩展,归纳了如下几步:


// 1.开启一个透明上下文(必须选择透明上下文,否则圆形区域之外将会被填充上其他颜色)

UIGraphicsBeginImageContextWithOptions(self.size, NO, 0.0f);

// 2.加入一个圆形路径到图形上下文

CGContextRef ctx = UIGraphicsGetCurrentContext();

CGRect rect = CGRectMake(0, 0, self.size.width, self.size.height);

CGContextAddEllipseInRect(ctx, rect);

// 3.裁剪

CGContextClip(ctx);

// 4.绘制图像

[self drawInRect:rect];

// 4.取得图像

UIImage* circleImage = UIGraphicsGetImageFromCurrentImageContext();

// 5.关闭上下文

UIGraphicsEndImageContext();

上述的步骤,添加封装成为一个方法,通过UIImage category的方式提供。

效果图如下:



代码已经写好,可以直接下载使用。代码下载地址:点击这里下载 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 5,147评论 5 13
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 8,573评论 6 30
  • Quartz2D以及drawRect的重绘机制字数1487 阅读21 评论1 喜欢1一、什么是Quartz2D Q...
    PurpleWind阅读 810评论 0 3
  • --绘图与滤镜全面解析 概述 在iOS中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益...
    韩七夏阅读 2,796评论 2 10
  • 说起姚贝娜,大家都被其《也许明天》所惊艳。而也因此,遭到4位导师的哄抢。然而,决赛组上,却是错失冠军,让所有人惋惜...
    段子手万千阅读 510评论 0 0