文档章节

裁剪带圆环的圆形的图片步骤

马尔代夫的沙滩
 马尔代夫的沙滩
发布于 2016/04/09 23:55
字数 446
阅读 51
收藏 0

裁剪带圆环的圆形的图片步骤:

1.加载图片

    UIImage *image = [UIImage imageNamed:@"dst2"];

2.开启图形上下文对象begin(后需要关闭end)

因为圆环上下文的size比图片大一些。

    CGFloat margin = 5;

    CGSize ctxSize = CGSizeMake(image.size.width +2*margin , image.size.height + 2*margin);

    UIGraphicsBeginImageContextWithOptions(ctxSize, YES, 0);

3.获取开启的上下文对象

    CGContextRef ctx = UIGraphicsGetCurrentContext();

4.确定圆形的圆环的半径与圆心

    CGPoint centerP = CGPointMake(ctxSize.width/2, ctxSize.height/2);

    CGFloat radius = MIN(image.size.width, image.size.height)/2;

5.裁减圆形和绘制圆环。

    / 创建一个圆环/

    UIBezierPath *pathLine = [UIBezierPath bezierPathWithArcCenter:centerP radius:radius startAngle:0 endAngle:2*M_PI clockwise:YES];

    CGContextSetLineWidth(ctx, 10);

    [[UIColor redColor]set];

    CGContextAddPath(ctx, pathLine.CGPath);

    CGContextDrawPath(ctx, kCGPathStroke);

    /创建一个圆环

    /裁减圆形 

    UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:centerP radius:radius startAngle:0 endAngle:2*M_PI clockwise:YES];

    CGContextAddPath(ctx, path.CGPath);

    CGContextClip(ctx);

    /裁减圆形 /

(注意:圆环在前,圆形在后,否则看不到圆环)

6.绘制图片

    [image drawAtPoint:CGPointMake(margin, margin)];

    

7.获取裁剪后图片

    UIImage *getImage = UIGraphicsGetImageFromCurrentImageContext();

//此时判断是否需要对图片进行适应屏幕的裁减。(比如长宽不等图片可能会出现压缩,需要裁剪成方形)

 //7.截取图片(之前需要先将图片添加到图形上下文中,然后获取到再截取)

    CGFloat x;
   
CGFloat y;
   
CGFloat w;
   
CGFloat h;
   
//a.当是竖屏照片时
   
if (getImage.size.height >=getImage.size.width) {
       
        x =
0;
        y = (getImage.
size.height - 2*radius)/2;
       
    }
else{
       
//b.当时横屏照片时
        y =
0;
        x = (getImage.
size.width - 2*radius)/2;
    }
   
    w =
2*radius;
    h = w;
   
   
//为保证图片的正确显示,乘以屏幕缩放比
   
CGFloat scale = [UIScreen mainScreen].scale;
    x *= scale;
    y *= scale;
    w *= scale;
    h *= scale;
   
//截取  CG开头C语言。不用*
   
CGImageRef imageRef = CGImageCreateWithImageInRect(getImage.CGImage, CGRectMake(x, y, w, h));
   
   
//转换格式

    getImage = [UIImage imageWithCGImage:imageRef];

8.关闭之前开启的上下文

    UIGraphicsEndImageContext();

9.给imageView的image赋值。


© 著作权归作者所有

马尔代夫的沙滩
粉丝 11
博文 53
码字总数 20296
作品 0
海淀
程序员
私信 提问
裁剪带圆环的圆形的图片步骤

裁剪带圆环的圆形的图片步骤: 1.加载图片 UIImage *image = [UIImage imageNamed:@"dst2"]; 2.开启图形上下文对象begin(后需要关闭end) 因为圆环上下文的size比图片大一些。 CGFloat marg...

马尔代夫的沙滩
2016/04/24
56
0
核心动画CoreAnimation

核心动画CoreAnimation 基本动画:CABasicAnimation 帧动画:CAKeyframeAnimation 组动画:CAAnimationGroup CoreAnimation时直接作用在CALayer上的,并非UIView。 CABasicAnimation:平移,旋...

马尔代夫的沙滩
2016/04/08
48
0
android res资源 drawable自定义背景 values格式

res anim 动画目录 leftin.xml scale.xml drawable 自定义动画目录 redbuttonbg.xml circlebuttonbg.xml drawable-xhdpi 放资源文件图片 layout 放布局文件图片 raw 音频、数据库等资源文件 ...

cicue
2014/09/25
207
0
iOS 图片裁剪--YSHYClipImageController

YSHYClipImageController 实现圆形 方形两种方式的图片裁剪,支持自定义裁剪大小,支持自定义图片缩放比例。 实现圆形 方形两种方式的图片裁剪,支持自定义裁剪大小,支持自定义图片缩放比例、 ...

yangshuyuan
2015/12/11
849
1
cc.Sprite组件详解

cc.Sprite 1.游戏种显示一个图片,通常我们把这个叫做"精灵"sprite 2.cocos creator如果需要显示一个图片,那么节点上 就要挂一个精灵组件,为这个组件指定要显示的图片(SpritrFrame) 3.显示一个...

技术小胖子
2017/11/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

jQuery使用GET方式来进行异步请求

jQuery.get( url, [data], [callback] ):使用GET方式来进行异步请求 参数: url(String) : 发送请求的URL地址. data(Map) : (可选) 要发送给服务器的数据,以 Key/value 的键值对形式表示,...

前端老手
4分钟前
1
0
网络安全市场需求

最近,网络安全技能差距的热门话题流传开来。技能差距经常被紧急讨论,可以看出它在实践中的作用是很大的。但信息安全是一门广泛的学科,所以在谈论“技能差距”时需要更具体。有专家表示,真...

linuxCool
21分钟前
2
0
定期批量改密,实现高效运维,保障口令安全

随着企业IT资产规模的不断增大,各类主机、应用系统的管理也变得愈加困难。 对于系统管理员来说,保证操作系统的密码安全是其重要工作,在需要维护众多的主机时,其面临的困境将是: 1、难以...

堡垒啊
46分钟前
5
0
怎样在磁盘上查找MySQL表的大小?这里有答案

导读 我想知道 MySQL 表在磁盘上占用多少空间,但看起来很琐碎。不应该在 INFORMATION_SCHEMA.TABLES 中提供这些信息吗?没那么简单! 我想知道 MySQL 表在磁盘上占用多少空间,但看起来很琐碎...

问题终结者
今天
6
0
Spring Boot缓存实战 Redis 设置有效时间和自动刷新缓存-2

问题 上一篇Spring Boot Cache + redis 设置有效时间和自动刷新缓存,时间支持在配置文件中配置,说了一种时间方式,直接扩展注解的Value值,如: @Override@Cacheable(value = "people#${s...

xiaolyuh
今天
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部