圖片裁剪圓角

UIImage+Expansion.h文件

/**
 *  圓角圖片裁剪
 *
 *  @param name        要裁剪的圖片名字
 *  @param borderWidth 邊框寬度
 *  @param borderColor 邊框顏色
 *
 */
+ (instancetype)circleImageWithName:(NSString *)name borderWidth:(CGFloat)borderWidth borderColor:(UIColor *)borderColor;

UIImage+Expansion.m文件


#pragma mark - 圓形圖片裁剪
+ (instancetype)circleImageWithName:(NSString *)name borderWidth:(CGFloat)borderWidth borderColor:(UIColor *)borderColor
{
    // 1.加載原圖
    UIImage *oldImage = [UIImage imageNamed:name];

    // 2.開啟位圖上下文
    CGFloat imageW = oldImage.size.width + 2 * borderWidth;
    CGFloat imageH = oldImage.size.height + 2 * borderWidth;
    CGSize imageSize = CGSizeMake(imageW, imageH);
    // size : 新圖片的尺寸
    UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0.0);

    // 3.取得當前的上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();

    // 4.畫邊框(大圓)
    [borderColor set];
    CGFloat bigRadius = imageW * 0.5; // 大圓半徑
    CGFloat centerX = bigRadius; // 圓心
    CGFloat centerY = bigRadius;
    CGContextAddArc(ctx, centerX, centerY, bigRadius, 0, M_PI * 2, 0);
    CGContextFillPath(ctx); // 畫圓

    // 5.小圓
    CGFloat smallRadius = bigRadius - borderWidth;
    CGContextAddArc(ctx, centerX, centerY, smallRadius, 0, M_PI * 2, 0);
    // 裁剪(后面畫的東西才會受裁剪的影響)
    CGContextClip(ctx);

    // 6.畫圖
    [oldImage drawInRect:CGRectMake(borderWidth, borderWidth, oldImage.size.width, oldImage.size.height)];

    // 7.取圖
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

    // 8.結束上下文
    UIGraphicsEndImageContext();

    return newImage;

}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容