• 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 / 4, rect.size.height / 4, rect.size.width / 2, rect.size.height / 2));
        CGContextClip(contextRef);
        CGContextFillPath(contextRef);
        [self.image drawAtPoint:CGPointMake(100, 0)];
        
        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 imageSizeMin = MIN(image.size.width, image.size.height);
            
            CGFloat circleImageWH = imageSizeMin;
            CGFloat circleImage_x = (image.size.width - circleImageWH) / 2;
            CGFloat circleImage_y = (image.size.height - circleImageWH) / 2;
            
    
            self.imageView.image = [image imageClicpCircleWithRect:CGRectMake(circleImage_x, circleImage_y, circleImageWH, circleImageWH)];
    
        } return _imageView;
    }
  • 相关阅读:
    Python的七大数据类型整理
    Linux下获取线程ID tid的方法
    字符串逆序操作
    ftp的两种模式
    exec函数族
    代码行数统计(指定目录下所有文件的Line)
    windows 命令行操作
    C语言时间打印
    Anaconda下载安装说明
    python 使用request进行get post请求
  • 原文地址:https://www.cnblogs.com/mancong/p/6138104.html
Copyright © 2020-2023  润新知