OC 利用绘图绘制图片

圆形图片(头像)

  • UIGraphicsBeginImageContext(CGSize size)
    或者UIGraphicsBeginImageContextWithOptions(CGSize size, BOOL opaque, CGFloat scale) 准备绘图环境

  • CGContextRef con =UIGraphicsGetCurrentContext();获取上下文

  • UIGraphicsGetImageFromCurrentImageContext();从当前上下文获取图片

  • UIGraphicsEndImageContext();关闭绘图环境

要点:绘制并截取一个指定大小的圆,然后把图片绘制上去,得到新的Image

- (UIImage*)imageClip:(UIImage*)image {
    
    CGSize size = image.size;
    CGRect bounds = CGRectMake(0, 0, size.width, size.height);
    //开启指定大小的上下文
    UIGraphicsBeginImageContext(size);
    CGContextRef con =UIGraphicsGetCurrentContext();
    //绘制一个圆
    CGContextAddEllipseInRect(con, bounds);
    //剪切
    CGContextClip(con);
    //把图片画上去
    //(1)
    [image drawInRect:bounds];
    //(2) 或者这样写
//    CGContextDrawImage(con, CGRectMake(0, 0, size.width, size.height), _image.CGImage);
    //获取画上去之后的图片
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
   //关闭图片上下文
    UIGraphicsEndImageContext();
    return newImage;
}

将图片尺寸等比例缩小/指定尺寸

(UIImage *) scaleImage:(UIImage *)image toScale:(float)scaleSize {
    
    UIGraphicsBeginImageContext(CGSizeMake(image.size.width * scaleSize, image.size.height * scaleSize));
   
    [image drawInRect:CGRectMake(0, 0, image.size.width * scaleSize, image.size.height * scaleSize)];
   
    UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
    
    UIGraphicsEndImageContext();
    
    return scaledImage;
}

- (UIImage *) scaleImage:(UIImage *)image toSize:(CGSize)Size {
    
    UIGraphicsBeginImageContext(CGSizeMake(Size.width, Size.height));
    
    [image drawInRect:CGRectMake(0, 0, Size.width, Size.height)];
    
    UIImage *sizeImage = UIGraphicsGetImageFromCurrentImageContext();
    
    UIGraphicsEndImageContext();
    
    return sizeImage;
}

你可能感兴趣的:(OC 利用绘图绘制图片)