zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    HDU 1874 畅通工程续(dijkstra)
    HDU 2112 HDU Today (map函数,dijkstra最短路径)
    HDU 2680 Choose the best route(dijkstra)
    HDU 2066 一个人的旅行(最短路径,dijkstra)
    关于测评机,编译器,我有些话想说
    测评机的优化问题 时间控制
    CF Round410 D. Mike and distribution
    数字三角形2 (取模)
    CF Round410 C. Mike and gcd problem
    CF Round 423 D. High Load 星图(最优最简构建)
  • 原文地址:https://www.cnblogs.com/mancong/p/6138104.html
Copyright © 2011-2022 走看看