iOS 开发中利用 Quartz 2D 获得圆角图片
来源:互联网 发布:知乎你女神 编辑:程序博客网 时间:2024/06/07 22:18
背景:
现在社交软件中,圆角的图片可以说是泛滥了,原来方方正正的 QQ 头像,都被世俗磨平了...
那么怎么将一张图片加工成圆角呢?
你可能会说:"找美工啊!" 对!偷懒必备口诀之 "找美工!" 但是,如果用户自己要上传自定义头像呢?
还是一要程序处理嘛!
下面我们利用强大的Quartz 2D 来自己加工图片
直接上代码:
代码:
我是给 UIImage 增加了一个分类,以后直接各种用
+ (instancetype)imageWithIcon:(NSString *)icon border:(NSInteger)border color:(UIColor *)color{ // 0.获取原图 UIImage *image = [UIImage imageNamed:icon]; // 1.创建图片上下文 CGFloat margin = border; CGSize size = CGSizeMake(image.size.width + margin, image.size.height + margin); // YES 不透明 NO 透明 UIGraphicsBeginImageContextWithOptions(size, NO, 0); // 2.绘制背景的大圆 CGContextRef ctx = UIGraphicsGetCurrentContext(); CGContextAddEllipseInRect(ctx, CGRectMake(0, 0, size.width, size.height)); [color set]; CGContextFillPath(ctx); // 3.绘制小圆 CGFloat smallX = margin * 0.5; CGFloat smallY = margin * 0.5; CGFloat smallW = image.size.width; CGFloat smallH = image.size.height; CGContextAddEllipseInRect(ctx, CGRectMake(smallX, smallY, smallW, smallH)); // 4.指定可用的范围,这个范围是从这句代码之后,也就是说,之前的不受影响 CGContextClip(ctx); // 5.绘图图片 [image drawInRect:CGRectMake(smallX, smallY, smallW, smallH)]; // 6.取出图片 UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); return newImage; }
分类弄好了,我们来看看效果:
原图:
处理好的:(请不要在意我的背景)
调用代码:
UIImage *image = [UIImage imageWithIcon:@"3.jpg" border:4 color:[UIColor colorWithRed:0 green:0 blue:0 alpha:0.25]];
注意:最好弄个透明度,否则怎么调都好难看的说..
0 0
- iOS 开发中利用 Quartz 2D 获得圆角图片
- IOS开发—Quartz 2D介绍
- 9、iOS开发之 Quartz-2d
- iOS 图像开发之Quartz 2D
- iOS开发—Quartz 2D介绍
- iOS开发之Quartz 2D实现图片加水印效果
- 利用Quartz 2D实现图片的旋转、缩放、裁剪
- IOS Quartz 2D
- iOS-Quartz 2D
- IOS Quartz 2D
- ios-Quartz 2D
- 【iOS】Quartz 2D图片压缩和裁剪
- iOS开发系列--Quartz 2D绘制2D图形和Core Image中强大的滤镜功能
- iOS开发系列--Quartz 2D绘制2D图形和Core Image中强大的滤镜功能
- IOS开发(107)之Quartz 2D绘图
- 移动开发(IOS) – Quartz 2D绘图
- iOS开发之quartz 2d绘图基础
- iOS开发 基本绘图/Quartz 2D/Core Image
- Sicily 3913 阶乘之和
- 十个最值得阅读学习的C开源项目代码
- 推荐!国外程序员整理的Java资源大全
- JProfiler使用详细教程学习笔记
- Android开发 解析JSON数据格式 如何去掉JSON数据文件的BOM头
- iOS 开发中利用 Quartz 2D 获得圆角图片
- Sicily 1294. 高级机密
- 工程实践中最常用的10大数据结构与算法
- lua全局访问到的数据的存储
- 用JS实现的类似密码的输入特效
- Sicily 1201. 01000001
- wxWidgets:wxApp概述
- 利用Java编写简单的WebService实例
- 8大排序算法图文讲解