zoukankan      html  css  js  c++  java
  • 图片裁剪之圆形头像

    把一张普通的图片刻意裁剪成圆形,并给圆形图片加上圆形边框

    代码抽取为UIImage的分类方法,如下:

     1 + (instancetype)circleImageWithName:(NSString *)name borderWidth:(CGFloat)borderWidth borderColor:(UIColor *)borderColor
     2 {
     3     // 1.加载原图
     4     UIImage *oldImage = [UIImage imageNamed:name];
     5     
     6     // 2.开启上下文
     7     CGFloat imageW = oldImage.size.width + 2 * borderWidth;
     8     CGFloat imageH = oldImage.size.height + 2 * borderWidth;
     9     CGSize imageSize = CGSizeMake(imageW, imageH);
    10     UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0.0);
    11     
    12     // 3.取得当前的上下文
    13     CGContextRef ctx = UIGraphicsGetCurrentContext();
    14     
    15     // 4.画边框(大圆)
    16     [borderColor set];
    17     CGFloat bigRadius = imageW * 0.5; // 大圆半径
    18     CGFloat centerX = bigRadius; // 圆心
    19     CGFloat centerY = bigRadius;
    20     CGContextAddArc(ctx, centerX, centerY, bigRadius, 0, M_PI * 2, 0);
    21     CGContextFillPath(ctx); // 画圆
    22     
    23     // 5.小圆
    24     CGFloat smallRadius = bigRadius - borderWidth;
    25     CGContextAddArc(ctx, centerX, centerY, smallRadius, 0, M_PI * 2, 0);
    26     // 裁剪(后面画的东西才会受裁剪的影响)
    27     CGContextClip(ctx);
    28     
    29     // 6.画图
    30     [oldImage drawInRect:CGRectMake(borderWidth, borderWidth, oldImage.size.width, oldImage.size.height)];
    31     
    32     // 7.取图
    33     UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    34     
    35     // 8.结束上下文
    36     UIGraphicsEndImageContext();
    37     
    38     return newImage;
    39 }

    效果图:

  • 相关阅读:
    HDU 6430 Problem E. TeaTree(虚树)
    hdu6437 Problem L.Videos(网络流)
    Rikka with Prefix Sum(组合数学)
    借教室
    2018年全国多校算法寒假训练营练习比赛(第五场)H Tree Recovery
    1296 营业额统计
    FZU oj Problem 2082 过路费
    大数乘法(适合k进制)
    重载小于号
    莫比乌斯
  • 原文地址:https://www.cnblogs.com/caofutao/p/4824692.html
Copyright © 2011-2022 走看看