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);

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506044.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 图像处理_Python中的十大图像处理工具

文章发布于公号【数智物语】 (ID:decision_engine),关注公号不错过每一篇干货。来源 | 大数据文摘(BigDataDigest)编译 | 张秋玥、小七、蒋宝尚本文主要介绍了一些简单易懂最常用的 Python 图像处理库。当今世界充满了各种数据&am…

php函数方法,基于PHP函数的操作方法

如下所示://简单函数function show(){echo "hello";}show();//有参数的函数function show($a){echo "$a";}show("world");//有返回值的函数function show(){return "小V,你好!";}echo show();functi…

centos7安装php5.2yum源操作_Centos7.6使用yum安装PHP7.2

Centos7.6使用yum安装PHP7.21、安装源安装php72w,是需要配置额外的yum源地址的,否则会报错不能找到相关软件包。php高版本的yum源地址,有两部分,其中一部分是epel-release,另外一部分来自webtatic。如果跳过epel-relea…

mysqlclient==1.3.7对应mysql版本_「MySQL」CentOs 7 下安装MySQL

MySQLMySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一YUM 安装mysql1、下载 YUM 仓库文件打开网址: https://dev.mysql.com/downloads/…

php rewinddir(),PHP rewinddir() 函数 ——jQuery中文网

实例打开一个目录,列出其中的文件,充值目录句柄,重新列出其中的文件,然后关闭:$dir "/images/";// Open a directory, and read its contentsif(is_dir($dir)){if ($dh opendir($dir)){//List files in im…

汇编jnl_汇编指令集

1 X86和X87汇编指令大全(有注释)2 ---------- 一、数据传输指令 ----------------------------------------------------3 它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.4 1. 通用数据传送指令.5 MOV 传送字或字节.6 MOVSX 先符号扩展,再传送.7 MOVZX 先零扩展,再传…

nginx log response_nginx优化配置大全

很多程序员面试被问到nginx优化做过哪些,因此来记录下配置文件样例为生产环境样例。1、nginx基本优化安装方式有2种:1、源码包安装 2、yum(apt-get)安装区别为如果用yum安装的话,很方便,并且基本不报错。如…

指纹对比软件_iQOO VS 小米9屏幕指纹大对决,这次我为vivo疯狂打Call!

在经历了性能、续航、充电的对比之后,我们今天带来了iQOO和小米9的屏幕指纹对比,看看两者在屏幕指纹方面究竟有何不同的表现。▼屏幕指纹原理目前屏幕指纹技术大致分为光电屏幕指纹和超声波屏幕指纹两种,而iQOO和小米9所采用的都是光电屏幕指…

oracle数据库恢复参数文件位置,Oracle数据库的参数文件备份与恢复

Oracle数据库的参数文件包含两个文件:一个是spfile二进制文件名字为spfilesid.ora(其中sid你数据库的实例名称)。另一个是pfile文本文件的参数文件,名字为initsid.ora(其中sid你数据库的实例名称)。默认情况下数据库是只有一个参数文件的,那就是spfile,它…

python绘制3d坐标轴_matplotlib在python上绘制3D散点图实例详解

大家可以先参考官方演示文档: 效果图:3D scatterplotDemonstration of a basic scatterplot in 3D.from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt import numpy as np def randrange(n, vmin, vmax):Helper function to mak…

oracle cascade是什么意思啊,Oracle外键(Foreign Key)之级联删除(DELETE CASCADE)

什么是级联删除(DELETE CASCADE)?级联删除是指当主表(parent table)中的一条记录被删除,子表中关联的记录也相应的自动删除。备注:外键字段在该表中为主键的表,即为主表;外键字段在该表中为普通字段的表,即…

翻转链表python递归_Python实现链表反转的方法【迭代法与递归法】

导读 这篇文章主要介绍了Python实现链表反转的方法,结合实例形式分析了Python迭代法与递归法实现链表反转的相关操作技巧与注意事项,需要的朋友可以参考下 本文实例讲述了Python实现链表反转的方法。分享给大家供大家参考,具体如下: Python实现链表反转 …

oracle高级函数去重,傅老师课堂:Oracle高级应用之去重聚合函数

开篇一笑:高中的时候,自行车被偷,早上顺路搭同学的自行车。我坐在后座看到前面一大妈跑步,很猥琐的对同学说:“你看前面那个肥婆跑得屁股都甩圆了!”这货沉默了一下。当我们和大妈擦身而过的时候&#xff0…

jquery手写轮播图_jquery 实现轮播图详解及实例代码_jquery_脚本之家

轮播图:接触jquery也有一段时间了,今天刚好利用轮播图来练练手。博文的前面会介绍一个简单用jquery做轮播图的例子,中间会插入一些关于轮播图更多的思考,在后面会用Javascript的方法来写一个轮播图,最后则是关于jquery…

关于python_关于python的基础知识

一,编程语言的类型: 1、编译型 2、解释型 3、静态语言 4、动态语言 5、强类型定义语言 6、弱类型定义语言 编译型vs解释型 编译型: 优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译…

oracle10g如何导出dmp,Oracle 10g dmp文件的导入导出

Oracle数据导入dmp文件可以是“某个用户下的数据库”,也可以是“某张表”,这里以导入数据库为例说明 :1.用SYS用户名,以DBA的身份在ie中登入到数据库(ORACLE客户端Enterprise Manager Console)2.在方案->用户与权限->用户新…

idea 不打开文件提示错误_IDEA无法正常启动(打不开报错)

版权声明:转载请附上文章地址https://blog.csdn.net/qq_42672839IDEA无法正常启动(两种问题)目录第一种是缓存问题 双击Idea打开,无任何反应,资源管理器中有Idea的进程。第二种报错(报错: cannot lock system foiders)两种…

python套用word模板_如何使用Python批量创建Word模板

如何使用 Python 批量创建 Word 模板 在日常工作中我们经常需要重复性地将同一份内容的 Word 文档资料发送 给多个不同客户, 此时 Word 文档内容可能只有客户署名不同、 或者只有部分关 键信息不同。此时如果采用传统的工作方法我们可能需要反复地打开不同 Word 文档…

oracle sh文件怎么打开,Oracle数据库逻辑备份的SH文件

该Oracle教程将告诉诸位学习Oracle的朋友:Oracle数据库逻辑备份的SH文件。完全备份的SH文件:exp_comp.shrq date "%m%d" su - oracle -c "exp system/manager fully inctypecomplete file/oracle/export/db_comp$rq.dmp"累计备份的S…

jetson nano 系统镜像制作_2.Jetson Nano烧写系统镜像

烧录工具.zip点击下载Jetson Nano是一款形状和接口类似于树莓派的嵌入式主板,搭载了四核Cortex-A57处理器,GPU则是拥有128个NVIDIA CUDA核心的NVIDIA Maxwell架构显卡,内存为4GB的LPDDR4,存储则为16GB eMMC 5.1,支持4K…