裁剪带圆环的圆形的图片步骤

本文详细介绍了在Swift中裁剪并绘制带圆环的圆形图片的步骤,包括加载图片、创建圆环、裁剪圆形、绘制图片以及最终获取裁剪后图片的方法。

裁剪带圆环的圆形的图片步骤:

1.加载图片

    UIImage *image = [UIImage imageNamed:@"dst2"];

2.开启图形上下文对象begin(后需要关闭end)

因为圆环上下文的size比图片大一些。

    CGFloat margin = 5;

    CGSize ctxSize = CGSizeMake(image.size.width +2*margin , image.size.height + 2*margin);

    UIGraphicsBeginImageContextWithOptions(ctxSize, YES, 0);

3.获取开启的上下文对象

    CGContextRef ctx = UIGraphicsGetCurrentContext();

4.确定圆形的圆环的半径与圆心

    CGPoint centerP = CGPointMake(ctxSize.width/2, ctxSize.height/2);

    CGFloat radius = MIN(image.size.width, image.size.height)/2;

5.裁减圆形和绘制圆环。

    / 创建一个圆环/

    UIBezierPath *pathLine = [UIBezierPath bezierPathWithArcCenter:centerP radius:radius startAngle:0 endAngle:2*M_PI clockwise:YES];

    CGContextSetLineWidth(ctx, 10);

    [[UIColor redColor]set];

    CGContextAddPath(ctx, pathLine.CGPath);

    CGContextDrawPath(ctx, kCGPathStroke);

    /创建一个圆环

    /裁减圆形 

    UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:centerP radius:radius startAngle:0 endAngle:2*M_PI clockwise:YES];

    CGContextAddPath(ctx, path.CGPath);

    CGContextClip(ctx);

    /裁减圆形 /

(注意:圆环在前,圆形在后,否则看不到圆环)

6.绘制图片

    [image drawAtPoint:CGPointMake(margin, margin)];

    

7.获取裁剪后图片

    UIImage *getImage = UIGraphicsGetImageFromCurrentImageContext();

//此时判断是否需要对图片进行适应屏幕的裁减。(比如长宽不等图片可能会出现压缩,需要裁剪成方形)

 //7.截取图片(之前需要先将图片添加到图形上下文中,然后获取到再截取)

    CGFloat x;
    CGFloat y;
    CGFloat w;
    CGFloat h;
    //a.当是竖屏照片时
    if (getImage.size.height >=getImage.size.width) {
       
        x = 0;
        y = (getImage.size.height - 2*radius)/2;
       
    }else{
        //b.当时横屏照片时
        y = 0;
        x = (getImage.size.width - 2*radius)/2;
    }
   
    w = 2*radius;
    h = w;
   
    //为保证图片的正确显示,乘以屏幕缩放比
    CGFloat scale = [UIScreen mainScreen].scale;
    x *= scale;
    y *= scale;
    w *= scale;
    h *= scale;
    //截取  CG开头C语言。不用*
    CGImageRef imageRef = CGImageCreateWithImageInRect(getImage.CGImage, CGRectMake(x, y, w, h));
   
    //转换格式

    getImage = [UIImage imageWithCGImage:imageRef];

8.关闭之前开启的上下文

    UIGraphicsEndImageContext();

9.给imageView的image赋值。


转载于:https://my.oschina.net/u/2618362/blog/656014

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值