两种方法生成圆形图片
现在常见的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的方式提供。
效果图如下:
代码已经写好,可以直接下载使用。代码下载地址:点击这里下载