iOS 图片裁剪(用户头像裁剪)
程序员文章站
2022-03-24 23:03:29
...
图片裁剪
把一张图片裁剪为指定的样式,比如常见的用户头像
思路:
- 在图片的基础上绘制时,需要创建一个位图上下文
- 确定裁剪区域(超出裁剪区域的都将被清除)
- 绘制图片
- 从位图上下文中获取图片
- 关闭上下文
/**
圆形头像截取
@param image 要处理的头像图片
@param border 圆环宽度
@param color 圆环颜色
@return 处理完的头像图片
*/
-(UIImage *)imageWithClipImage:(UIImage *)image withBorderWidth:(CGFloat)border withBorderColor:(UIColor *)color{
//设置圆环的宽度
CGFloat backImageWH = image.size.width + 2 * border;
//创建位图上下文,大小和原图一样大
UIGraphicsBeginImageContextWithOptions(CGSizeMake(backImageWH, backImageWH), NO, 0);
//画底色大圆
UIBezierPath *backPath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0,0,backImageWH, backImageWH)];
[color set];
[backPath fill];
//设置圆形裁剪区域,正切与图片
UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(border,border,image.size.width, image.size.height)];
//把路径设置为裁剪区域
[path addClip];
//绘制图片
[image drawAtPoint:CGPointMake(border, border)];
//从上下文获取图片
UIImage *clipImage = UIGraphicsGetImageFromCurrentImageContext();
//关闭上下文
UIGraphicsEndImageContext();
return clipImage;
}
最后,附上相关的demo,Git:(https://github.com/hejiasu/Drawing)