【代码】将一张正方形头像裁剪为原型,并保存在沙盒中

    

    //创建一个图片

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

    

    

    //获取一个和图片一样大小的上下文对象

    UIGraphicsBeginImageContextWithOptions(image.size, NO, 0.0);

    

    

    

    //获取上下文

    CGContextRef ctx  = UIGraphicsGetCurrentContext();

    

    

    

    

    

    

    

    

    //***********绘制图形************

    

    //定义圆心和坐标

    CGPoint centerP = CGPointMake(image.size.width*0.5, image.size.height*0.5);

    CGFloat radius = MIN(image.size.width*0.5, image.size.height*0.5);

    

    //绘制一个图形路径

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

    

    //添加到图形上下文中

    CGContextAddPath(ctx, path.CGPath);

    

    

    //裁剪图片

    CGContextClip(ctx);

    

    

    //做一个空心渲染

    CGContextDrawPath(ctx, kCGPathStroke);

    

    

    

    

    //将图片添加到上下文中

    [image drawAtPoint:CGPointZero];


    

    

    

    //从上下文中获取裁剪好的图片

    

    UIImage* imageClip = UIGraphicsGetImageFromCurrentImageContext();

    

    

    

    

    //创建一个正方形区域裁剪

    CGFloat x = (image.size.width - radius*2)*0.5;

    CGFloat y =(image.size.height - radius*2)*0.5;

    CGFloat width = radius *2;

    CGFloat height = width;

    

    //将屏幕的点转换成像素

    CGFloat scale = [UIScreen mainScreen].scale;

    x *= scale;

    y *= scale;

    width *= scale;

    height *= scale;

    

    

    CGRect clipRect = CGRectMake(x, y, width, height);

    

    //裁剪正方形区域的图片

    CGImageRef cgimgcliped = CGImageCreateWithImageInRect(imageClip.CGImage, clipRect);

    imageClip = [UIImage imageWithCGImage:cgimgcliped];

    

    

    


    

    

    

    //关闭上下文路径

    UIGraphicsEndImageContext();

    

    //**************将图片保存到沙盒中*****************

    

    //获取沙盒路径

    NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];

    NSString* filename = [docPath stringByAppendingPathComponent:@"111.png"];

    

    NSLog(@"%@",docPath);

    

    //将文件转换成二进制流文件

    NSData* clipPng = UIImagePNGRepresentation(imageClip);

    

    //将文件写入沙盒中的Document目录

    [clipPng writeToFile:filename atomically:YES];

    

    NSLog(@"写入成功");

    

    

    


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值