//创建一个图片
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(@"写入成功");