iOS如何裁剪圆形头像

本文实例为大家介绍了iOS裁剪圆形头像的详细代码,供大家参考,具体内容如下

- (void)viewDidLoad {
  [super viewDidLoad];

  //加载图片
  UIImage *image = [UIImage imageNamed:@"菲哥"];

  //获取图片尺寸
  CGSize size = image.size;

  //开启位图上下文
  UIGraphicsBeginImageContextWithOptions(size, NO, 0);

  //创建圆形路径
  UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, image.size.width, image.size.height)];

  //设置为裁剪区域
  [path addClip];

  //绘制图片
  [image drawAtPoint:CGPointZero];

  //获取裁剪后的图片
  _imageView.image = UIGraphicsGetImageFromCurrentImageContext();

  //关闭上下文
  UIGraphicsEndImageContext();

}

再来一张菲哥的头像

如果想要在圆形头像外加一个边框,思路是先绘制一个大圆,然后在这个圆尺寸范围内绘制一个图片大小的圆。

- (void)viewDidLoad {
  [super viewDidLoad];

  //加载图片
  UIImage *image = [UIImage imageNamed:@"大菲哥"];

  //设置边框宽度
  CGFloat border = 3;
  CGFloat imageWH = image.size.width;

  //计算外圆的尺寸
  CGFloat ovalWH = imageWH + 2 * border;

  //开启上下文
  UIGraphicsBeginImageContextWithOptions(image.size, NO, 0);

  //画一个大的圆形
  UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, ovalWH, ovalWH)];

  [[UIColor orangeColor]set];

  [path fill];

  //设置裁剪区域
  UIBezierPath *path1 = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(border, border, imageWH, imageWH)];
  [path1 addClip];

  //绘制图片
  [image drawAtPoint:CGPointMake(border, border)];

  //从上下文中获取图片
  _imageView.image = UIGraphicsGetImageFromCurrentImageContext();

  //关闭上下文
  UIGraphicsEndImageContext();

}

效果如图:

屏幕截图代码:
原理就是把屏幕上控件的layer渲染到上下文中

- (void)viewDidLoad {
  [super viewDidLoad];

  //开启上下文
  UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, 0);

  //获取上下文
  CGContextRef ctx = UIGraphicsGetCurrentContext();

  //把控件上的图层渲染到上下文
  [self.view.layer renderInContext:ctx];

  //获取上下文中的图片
  UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

  //关闭上下文
  UIGraphicsEndImageContext();

  //保存图片到相册
  UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);

}

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

(0)

相关推荐

  • 详解iOS 裁剪圆形图像并显示(类似于微信头像)

    本文主要讲解如何从照片库选择一张照片后将其裁剪成圆形头像并显示,类似于微信头像那种模式. 本文的方法也适用于当时拍照获取的图像,方法类似,所以不再赘述. 本文主要是在iOS 10环境下使用,此时如果要使用使用系统照片库.照相机等功能需要授权,授权方法如下: 右键点击工程目录中的"Info.plist文件-->Open As -->Source Code",打开复制以下你在应用中使用的隐私权限设置(描述自己修改): <key>NSVideoSubscriberAc

  • iOS如何裁剪圆形头像

    本文实例为大家介绍了iOS裁剪圆形头像的详细代码,供大家参考,具体内容如下 - (void)viewDidLoad { [super viewDidLoad]; //加载图片 UIImage *image = [UIImage imageNamed:@"菲哥"]; //获取图片尺寸 CGSize size = image.size; //开启位图上下文 UIGraphicsBeginImageContextWithOptions(size, NO, 0); //创建圆形路径 UIBez

  • iOS实现带文字的圆形头像效果

    下面就来实现一下这种效果   圆形头像的绘制 先来看一下效果图 分析一下: 1.首先是需要画带有背景色的圆形头像 2.然后是需要画文字 3.文字是截取的字符串的一部分 4.不同的字符串,圆形的背景色是不一样的 5.对于中英文同样处理,英文的一个字符和中文的一个汉字同样算作一个字符 6.文字总是居中显示 好 有了这样几点 我们就可以开始画图了 看一下最终实现的效果图 首先 ,我们需要自定义一个view当做自定义头像,在view的drawRect方法中进行图像的绘制 @interface Round

  • Android一行代码实现圆形头像

    效果图 在开发APP中,经常要实现圆形头像,那么该如何实现呢? 要裁剪吗,要重写draw函数吗?不用,只用一行代码就可以实现 Glide实现圆形图像 Glide.with(mContext) .load(R.drawable.iv_image_header) .error(R.drawable.ic_error_default) .transform(new GlideCircleTransform(mContext)) .into(mImage); 其中load后为载入的图像,error后为出

  • Android中使用CircleImageView和Cardview制作圆形头像的方法

    圆形头像在我们的日常使用的app中很常见,因为圆形的头像比较美观. 使用圆形图片的方法可能有我们直接将图片裁剪成圆形再在app中使用,还有就是使用自定义View对我们设置的任何图片自动裁剪成圆形. 效果图: 这里使用github上CircleImageView github:https://github.com/hdodenhof/CircleImageView CardView顾名思义卡片式的View,CardView继承的是FrameLayout,所以摆放内部控件的时候需要注意一下 可以设置

  • Android圆形头像拍照后“无法加载此图片”的问题解决方法(适配Android7.0)

    Feature: 点击选择拍照或者打开相册,选取图片进行裁剪最后设置为圆形头像. Problem: 拍好照片,点击裁剪,弹Toast"无法加载此图片". Solution: 在裁剪的class里加两行代码 intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); 主要代码如下: public static final S

  • Android 自定义圆形头像CircleImageView支持加载网络图片的实现代码

    在Android开发中我们常常用到圆形的头像,如果每次加载之后再进行圆形裁剪特别麻烦.所以在这里写一个自定义圆形ImageView,直接去加载网络图片,这样的话就特别的方便. 先上效果图 主要的方法 1.让自定义 CircleImageView 继承ImageView /** * 自定义圆形头像 * Created by Dylan on 2015/11/26 0026. */ public class CircleImageView extends ImageView { } 2.在构造方法中

  • Android自定义View之绘制圆形头像功能

    前言 做APP应用开发的时候,用户头像肯定是必不可少的,但是90%以上的需求头像都是圆形的.那么,如何通过自定义View的方式实现圆形头像呢,那么,本片博文会告诉你不仅仅是实现过程.一定会有意想不到的收获哦! 最终效果 国际惯例,我们先来看最终实现的效果图 自定义RoundImageView继承自ImageView public class RoundImageView extends ImageView { public RoundImageView(Context context) { su

  • iOS 图片裁剪的实现方法

    iOS 图片裁剪方法,主要有两种,一起来看下. 通过 CGImage 或 CIImage 裁剪 UIImage有cgImage和ciImage属性,分别可以获得CGImage和CIImage对象.CGImage和CIImage对象都有cropping(to:)方法,传入CGRect的参数表示要裁剪的区域(采用UIImage的坐标). static func cropImage(_ image: UIImage, withRect rect: CGRect) -> UIImage? { if le

  • iOS 图片裁剪 + 旋转

    之前分别介绍了图片裁剪和图片旋转方法 <iOS 图片裁剪方法> 地址:http://www.jb51.net/article/107308.htm <iOS 图片旋转方法> 地址:http://www.jb51.net/article/107361.htm 裁剪和旋转是可以连在一起执行的.先定位到需要裁剪的区域,然后以此区域的中心为轴,旋转一定角度,最后获取旋转后此区域内的图片.可以用位图(Bitmap)绘制实现 static func cropImage(_ image: UII

随机推荐