2019独角兽企业重金招聘Python工程师标准>>>

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

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赋值。

转载于:https://my.oschina.net/u/2618362/blog/656014

裁剪带圆环的圆形的图片步骤相关推荐

  1. Android实现带圆环的圆形头像(转载)

    其实设置圆头像很交单,一行代码: Glide.with(mContext).load("url").centerCrop().into(binding.supermarketIvH ...

  2. android圆环头像,Android实现带圆环的圆形头像

    在最近写的一个天气APP中用到了圆形头像这样的一个样式,中间是圆形的头像(被圆形切割的图片),周围是一个带颜色的圆环.如下图所示,今天就来说一所它的实现过程. 它的实现也不是特别困难,其实就是用到了B ...

  3. android头像圆环,Android实现带圆环的圆形头像

    在最近写的一个天气APP中用到了圆形头像这样的一个样式,中间是圆形的头像(被圆形切割的图片),周围是一个带颜色的圆环.如下图所示,今天就来说一所它的实现过程. 它的实现也不是特别困难,其实就是用到了B ...

  4. iOS自定义裁剪区域,正方形圆形图片头像裁剪,仿QQ头像裁剪,圆形遮罩,矩型遮罩

    最近项目中用到了自定义图片裁剪区域的图片裁剪功能,自己写了一个,可能有诸多不完善的地方,请大家指正. 支持任意区域裁剪,9:16裁剪.16:9裁剪.1:1裁剪.圆形裁剪等等,总之裁剪框的大小,裁剪框的 ...

  5. html进度条圆圈渐变色,HTML5 canvas带渐变色的圆形进度条动画

    jquery-circle-progress是一款带渐变色的圆形进度条动画特效jQuery插件.该圆形进度条使用的是HTML5 canvas来绘制圆形进度条及其动画效果,进度条使用渐变色来填充,效果非 ...

  6. Android 高手进阶之自定义View,自定义属性(带进度的圆形进度条)

    转载请注明地址:http://blog.csdn.net/xiaanming/article/details/10298163 很多的时候,系统自带的View满足不了我们功能的需求,那么我们就需要自己 ...

  7. Android 圆形/圆角图片的方法

    Android 圆形/圆角图片的方法 眼下网上有非常多圆角图片的实例,Github上也有一些成熟的项目.之前做项目,为了稳定高效都是选用Github上的项目直接用.但这样的结束也是Android开发必 ...

  8. 用计算机修改图片或照片,如何利用电脑自带的画图工具修改图片的基本属性

    大多数人可能对photoshop都很熟悉,也会熟练的运用,但是多数人可能都没有注意到电脑自带工具"画图",它不但但是画画功能,它还可以对图片做简单修改.下面小编就为大家介绍如何利用 ...

  9. html img 圆头像_纯CSS3炫酷圆形头像图片过滤特效

    这是一款效果非常酷的纯CSS3炫酷圆形头像图片过滤特效.该特效将图片制作为圆形图片,以网格形式布局,带点击相应的分类按钮后,该类别的图片被放大显示,其它类别的图片被缩小,效果非常的不错. 制作方法 H ...

最新文章

  1. nodeJS之eventproxy源码解读
  2. 怎样将无线路由做成无线AP
  3. 怎么安装python3-如何装python3
  4. vb.net連接ACCESS数据库
  5. vmware 5.51 下安装Ubuntu Linux8.04安装vmware tools不成功
  6. 02.改善深层神经网络:超参数调试、正则化以及优化 W2.优化算法
  7. 博主推荐【文件Hash校验工具V1.0 -免费版】
  8. 在批评数据湖的时候,你有没有想过,它并不是取代数据仓库的
  9. 5m独享网站服务器,您真的需要独享5m云服务器吗?一文让您了解云服务器带宽计算方法,从此不再花冤枉钱...
  10. apt-get出错,由于出现了太多错误,处理过程被终止
  11. 扩增子图表解读2散点图:组间整体差异分析(Beta多样性)
  12. 联想成全球PC业至尊
  13. 职场小人拉帮结派被孤立要如何处理
  14. SQLCE数据工具(Flyhoward Ltd SDF Viewer)
  15. 如何理解处理器、CPU、多处理器、内核、多核?
  16. python学习 - 标准库概览
  17. 咕咚vs悦跑圈的竞品分析
  18. 深度:传统服装品牌大量进入,老年身体机能变化催生数千亿中老年服装市场!
  19. 阿里新版java开发手册(2019华山版、2020泰山版)
  20. MongoDB地理空间移动演示

热门文章

  1. 学习PCB之走线的具体规则及输出制板文件
  2. 算法设计-分支界限法——装载问题
  3. 手持终端-C5S 企业专用智能手持终端
  4. python获取PST(太平洋)时间
  5. java sort方法用法
  6. iphone分辨率和点
  7. (必备技能)使用Python实现屏幕截图
  8. Web 与排版学上的字体问题
  9. 简单读书会 第2018-10-18期
  10. android WebView加载网页白屏问题优化处理