您的位置:首页 > 移动开发 > IOS开发

图片切圆处理

2016-07-19 16:41 435 查看
新建UIImage的分类声明发方法并实现
+(UIImage *)imageWithName:(NSString *)imageName imageBorder:(CGFloat)border borderColor:(UIColor
*)color{
    //  设置生成切圆的  外圆环的宽度
    CGFloat circleBorder = border;
    UIImage *oldImage = [UIImageimageNamed:imageName];
    //    新图片的尺寸
    CGFloat newImageWidth = oldImage.size.width+2*circleBorder;
    CGFloat newImageHeight = oldImage.size.height+2*circleBorder;
    CGFloat circleW =  (newImageWidth > newImageHeight) ? newImageHeight:newImageWidth;
    
    //    开启上下文
    UIGraphicsBeginImageContextWithOptions(CGSizeMake(circleW, circleW),NO,
0.0);
    //    画大圆
    UIBezierPath *pathBigCircle = [UIBezierPathbezierPathWithOvalInRect:CGRectMake(0,0,
circleW, circleW)];
    //    获取当前的上下文
    CGContextRef contextRef =UIGraphicsGetCurrentContext();
    //    添加到上下文
    CGContextAddPath(contextRef, pathBigCircle.CGPath);
    [color  set];
    //    渲染
    CGContextFillPath(contextRef);
    
    CGRect clip =CGRectMake(circleBorder, circleBorder, oldImage.size.width,
oldImage.size.height);
    //    正切与OldImage的圆
    UIBezierPath *pathSmallCircle = [UIBezierPathbezierPathWithOvalInRect:clip];
    //    设置裁剪区域
    [pathSmallCircle addClip];
    
    //    画图片
    [oldImage drawAtPoint:CGPointMake(circleBorder, circleBorder)];
    //    生成新的图片
    UIImage *newImage =UIGraphicsGetImageFromCurrentImageContext();
    
    UIGraphicsEndImageContext();
    
    return newImage;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios 图片