ios图片带边框的裁剪

01-带有边框的图片裁剪

具体实现思路:

1.假设边框宽度为BorderW

2.开启的图片上下文的尺寸就应该是原始图片的宽高分别加上两倍的BorderW,这样开启的目的是为了不让原始图片变形.

3.在上下文上面添加一个圆形填充路径.位置从0,0点开始,宽高和上下文尺寸一样大.设置颜色为要设置的边框颜色.

4.继续在上下文上面添加一个圆形路径,这个路径为裁剪路径.

它的x,y分别从BorderW这个点开始.宽度和高度分别和原始图片的宽高一样大.

将绘制的这个路径设为裁剪区域.

5.把原始路径绘制到上下文当中.绘制的位置和是裁剪区域的位置相同,x,y分别从border开始绘制.

6.从上下文状态当中取出图片.

7.关闭上下文状态.

//带边框的裁剪
- (UIImage *)clipImage {
    
    
    UIImage *image = [UIImage imageNamed:@"kenan.jpg"];
    
    CGFloat imageWH = image.size.width;

    //边界宽度
    CGFloat border = 1.5;
    //圆环的高度和宽度
    CGFloat ovalWH = imageWH + 2 * border;
    
    
    UIGraphicsBeginImageContextWithOptions(CGSizeMake(ovalWH, ovalWH), NO, 0);
    
    //画大圆
    UIBezierPath *bigArc = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, ovalWH, ovalWH)];
    [[UIColor colorWithRed:1.000 green:0.138 blue:0.046 alpha:1.000] set];
    
    [bigArc fill];
    
    
    //设置裁剪区域
    UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(border, border, imageWH, imageWH)];
    [path addClip];
    [image drawAtPoint:CGPointMake(border, border)];
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
    
    UIGraphicsEndImageContext();
    
    return img;
}

你可能感兴趣的:(ios图片带边框的裁剪)