美文网首页
iOS图片处理之切圆角

iOS图片处理之切圆角

作者: 一只代码狗 | 来源:发表于2018-02-26 17:32 被阅读21次

方法一:
自己画出圆角的路径,剪切!

+ (UIImage *)rh_getCornerImage:(UIImage *)image
                  cornerRadius:(CGFloat)cornerRadius {
    UIImage *cornerImage = image;
    
    CGFloat width = image.size.width * image.scale;
    CGFloat height = image.size.height * image.scale;
    CGFloat radius = cornerRadius * image.scale;
    CGSize size = CGSizeMake(width, height);
    
    CGRect rect = (CGRect){CGPointZero, size};
    UIGraphicsBeginImageContextWithOptions(size, false, 1.0);
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextBeginPath(context);
    CGContextMoveToPoint(context, 0, radius);
    CGContextAddArcToPoint(context, 0, 0, radius, 0, radius);
    CGContextAddLineToPoint(context, width - radius, 0);
    CGContextAddArcToPoint(context, width, 0, width, radius, radius);
    CGContextAddLineToPoint(context, width, height - radius);
    CGContextAddArcToPoint(context, width, height, width - radius, height, radius);
    CGContextAddLineToPoint(context, radius, height);
    CGContextAddArcToPoint(context, 0, height, 0, height - radius, radius);
    CGContextAddLineToPoint(context, 0, radius);
    CGContextClosePath(context);
    
    CGContextClip(context);
    
    [image drawInRect:rect];       // 画图
    CGContextDrawPath(context, kCGPathFill);
    // CGContextDrawImage(context, rect, cornerImage.CGImage); // 同上
    
    cornerImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return cornerImage;
}

方案二:
UIBezierPath裁剪

// UIBezierPath 裁剪
+ (UIImage *)rh_bezierPathClip:(UIImage *)img
                  cornerRadius:(CGFloat)cornerRadius {
    int w = img.size.width * img.scale;
    int h = img.size.height * img.scale;
    CGRect rect = (CGRect){CGPointZero, CGSizeMake(w, h)};

    UIGraphicsBeginImageContextWithOptions(CGSizeMake(w, h), false, 1.0);
    [[UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:cornerRadius] addClip];
    [img drawInRect:rect];
    UIImage *cornerImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    
    return cornerImage;
}

相关文章

  • [iOS] 图像处理:一种高效裁剪图片圆角的算法

    [iOS] 图像处理:一种高效裁剪图片圆角的算法 [iOS] 图像处理:一种高效裁剪图片圆角的算法

  • iOS设置圆角过量 渲染 卡顿问题

    UILabel处理 图片处理 参考文献iOS设置圆角的四种方法

  • iOS图片处理之切圆角

    方法一:自己画出圆角的路径,剪切! 方案二:UIBezierPath裁剪

  • iOS 图片圆角处理

    圆角的处理 来自 AsyncDisplayKit 的一个Deomo SocialAppLayout 这是...

  • UIImage 处理(I)

    参考资料:iOS绘图 - UIImage的一些简单操作iOS 图片圆角处理及各种“角”的解决方案

  • iOS技巧之圆角图片的处理

    目前很多应用很多地方如头像、背景等都喜欢大量使用带圆角的图片,若是简单粗暴的使用设置cornerRadius和ma...

  • iOS中图片圆角处理

    方法一: 使用layer 效果:在图片较多的TableView里面,卡顿现象较明显,原因是离屏幕渲染消耗性能 方法...

  • IOS中圆角图片的处理

    IOSUITableview中加入大量圆角图片时候,卡顿现象较明显,尝试了不同的方法做圆角图片: 方法一: 使用l...

  • 圆角处理图片

    用int的低位来表示各种状态: 1000 -> 8 - > 左上圆 0100 -> 6 - > 右上圆 0010 ...

  • 图片圆角处理

    在我们开发中经常会对一些图片进行圆角处理,这样会让应用看起来更加的美观,设置圆角有多种方法,但并不是每种都是性能很...

网友评论

      本文标题:iOS图片处理之切圆角

      本文链接:https://www.haomeiwen.com/subject/taiyxftx.html