欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

iOS 图片裁剪(用户头像裁剪)

程序员文章站 2022-03-24 23:03:29
...

图片裁剪

把一张图片裁剪为指定的样式,比如常见的用户头像
iOS 图片裁剪(用户头像裁剪)iOS 图片裁剪(用户头像裁剪)

思路:

  • 在图片的基础上绘制时,需要创建一个位图上下文
  • 确定裁剪区域(超出裁剪区域的都将被清除)
  • 绘制图片
  • 从位图上下文中获取图片
  • 关闭上下文
/**
 圆形头像截取

 @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)