iOS_UIImage_裁切圆形头像

时间:2023-03-09 06:02:58
iOS_UIImage_裁切圆形头像

github地址: https://github.com/mancongiOS/UIImage.git

UIImage的Cagetory

UIImage+ImageCircle.h

- (UIImage *)imageClicpCircleWithRect:(CGRect)rect;

UIImage+ImageCircle.m

#import "UIImage+ImageCircle.h"

@interface View : UIView
@property (nonatomic, strong) UIImage * image;
@end @implementation View - (void)drawRect:(CGRect)rect { CGContextRef contextRef = UIGraphicsGetCurrentContext();
CGContextSaveGState(contextRef); // Ellipse --> 椭圆的
CGContextAddEllipseInRect(contextRef, CGRectMake(rect.size.width / , rect.size.height / , rect.size.width / , rect.size.height / ));
CGContextClip(contextRef);
CGContextFillPath(contextRef);
[self.image drawAtPoint:CGPointMake(, )]; CGContextRestoreGState(contextRef);
}
@end @implementation UIImage (ImageCircle) - (UIImage *)imageClicpCircleWithRect:(CGRect)rect { View * myView = [[View alloc] init];
myView.image = self; UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext(); myView.frame = CGRectMake(rect.origin.x, rect.origin.y, rect.size.width, rect.size.height);
myView.backgroundColor = [UIColor orangeColor];
[myView.layer renderInContext:context]; UIImage * imageNew = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext(); return imageNew;
} @end

使用:

- (UIImageView *)imageView {
if (_imageView == nil) {
self.imageView = [[UIImageView alloc] init];
self.imageView.backgroundColor = [UIColor redColor]; UIImage * image = [UIImage imageNamed:@"1.jpg"];
// 裁剪出来一个在原图中心点,半径为四分之一原图宽高最小值的圆. CGFloat imageSi* = MIN(image.size.width, image.size.height); CGFloat circleImageWH = imageSi*;
CGFloat circleImage_x = (image.size.width - circleImageWH) / ;
CGFloat circleImage_y = (image.size.height - circleImageWH) / ; self.imageView.image = [image imageClicpCircleWithRect:CGRectMake(circleImage_x, circleImage_y, circleImageWH, circleImageWH)]; } return _imageView;
}