iOS如何将图片裁剪成圆形

 更新时间:2020年02月22日 09:20:55   作者:LayneCheung  
这篇文章主要为大家详细介绍了iOS如何将图片裁剪成圆形,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了iOS将图片裁剪成圆形的具体代码,供大家参考,具体内容如下

原图:

圆形图片裁剪效果:

裁剪成带边框的圆形图片:

核心代码:

#import <UIKit/UIKit.h>

@interface UIImage (image)

/**
 * 生成一张圆形图片
 *
 * @param image    要裁剪的图片
 *
 * @return 生成的圆形图片
 */

+ (UIImage *)imageWithClipImage:(UIImage *)image;

/**
 * 生成一张带有边框的圆形图片
 *
 * @param borderW   边框宽度
 * @param borderColor 边框颜色
 * @param image    要添加边框的图片
 *
 * @return 生成的带有边框的圆形图片
 */
+ (UIImage *)imageWithBorder:(CGFloat)borderW color:(UIColor *)borderColor image:(UIImage *)image;

@end
#import "UIImage+image.h"

@implementation UIImage (image)

+ (UIImage *)imageWithClipImage:(UIImage *)image{
+ 
  //1.开启跟原始图片一样大小的上下文
  UIGraphicsBeginImageContextWithOptions(image.size, NO, 0);
  //2.设置一个圆形裁剪区域
  //2.1绘制一个圆形
  UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, image.size.width, image.size.height)];
  //2.2.把圆形的路径设置成裁剪区域
  [path addClip];//超过裁剪区域以外的内容都给裁剪掉
  //3.把图片绘制到上下文当中(超过裁剪区域以外的内容都给裁剪掉)
  [image drawAtPoint:CGPointZero];
  //4.从上下文当中取出图片
  UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
  //5.关闭上下文
  UIGraphicsEndImageContext();

  return newImage;
}

+ (UIImage *)imageWithBorder:(CGFloat)borderW color:(UIColor *)borderColor image:(UIImage *)image{

  //1.开启一个上下文
  CGSize size = CGSizeMake(image.size.width + 2 * borderW, image.size.height + 2 * borderW);
  UIGraphicsBeginImageContextWithOptions(size, NO, 0);
  //2.绘制大圆,显示出来
  UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, size.width, size.height)];
  [borderColor set];
  [path fill];
  //3.绘制一个小圆,把小圆设置成裁剪区域
  UIBezierPath *clipPath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(borderW, borderW, image.size.width, image.size.height)];
  [clipPath addClip];
  //4.把图片绘制到上下文当中
  [image drawAtPoint:CGPointMake(borderW, borderW)];
  //5.从上下文当中取出图片
  UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
  //6.关闭上下文
  UIGraphicsEndImageContext();

  return newImage;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • IOS开发网络篇—Socket编程详解

    IOS开发网络篇—Socket编程详解

    这篇文章主要介绍了IOS开发网络篇—Socket编程的相关资料,需要的朋友可以参考下
    2016-09-09
  • Objective-C中关于实例所占内存的大小详解

    Objective-C中关于实例所占内存的大小详解

    这篇文章主要给大家介绍了关于Objective-C中实例所占内存的大小的相关资料,文中通过示例代码介绍的非常详细,对各位iOS开发者们具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-05-05
  • iOS中你需要的弹窗效果总结大全

    iOS中你需要的弹窗效果总结大全

    弹窗是app中常见控件之一,一般由于项目需求,我们很少能直接使用系统提供的弹窗,这个时候就需要我们根据产品需求封装自定义弹窗了。下面这篇文章主要给大家介绍了关于iOS中你需要的弹窗效果的相关资料,需要的朋友可以参考下
    2018-09-09
  • iOS自定义水平滚动条、进度条

    iOS自定义水平滚动条、进度条

    这篇文章主要为大家详细介绍了iOS自定义水平滚动条、进度条,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • iOS统计项目的代码总行数

    iOS统计项目的代码总行数

    最近一个项目有段时间了,不知道怎样可以统计出写了多少行代码,如何处理这个问题呢,下面我们来探讨下。
    2015-06-06
  • 详解iOS11关于导航栏问题

    详解iOS11关于导航栏问题

    本篇文章主要介绍了详解iOS11关于导航栏问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • IOS 常见内存泄漏以及解决方案

    IOS 常见内存泄漏以及解决方案

    这篇文章主要介绍了IOS 常见内存泄漏以及解决方案的相关资料,需要的朋友可以参考下
    2017-05-05
  • Xcode中代码注释编写的一些小技巧

    Xcode中代码注释编写的一些小技巧

    如何在 Xcode 中编写规范注释,规范注释可以在Xcode的快速帮助检查器(quickheliector)中显示,这篇文章主要给大家介绍了关于Xcode中代码注释编写的一些小技巧,需要的朋友可以参考下
    2021-10-10
  • IOS框架Spring常用的动画效果

    IOS框架Spring常用的动画效果

    本文给大家介绍的是在IOS开发中常用的动画效果以及自定义转场动画特效的代码,非常的简单实用,有需要的小伙伴可以参考下
    2016-03-03
  • iOS设置可选择圆角方向的控件圆角

    iOS设置可选择圆角方向的控件圆角

    在iOS开发中会遇到设置控件圆角的效果,这篇文章就给大家分享了实现的方法,且可以选择圆角的方向,有需要的朋友们可以参考借鉴,下面来一起学习学习吧。
    2016-11-11

最新评论