iOS如何將圖片裁剪成圓形
本文實(shí)例為大家分享了iOS將圖片裁剪成圓形的具體代碼,供大家參考,具體內(nèi)容如下
原圖:
圓形圖片裁剪效果:
裁剪成帶邊框的圓形圖片:
核心代碼:
#import <UIKit/UIKit.h> @interface UIImage (image) /** * 生成一張圓形圖片 * * @param image 要裁剪的圖片 * * @return 生成的圓形圖片 */ + (UIImage *)imageWithClipImage:(UIImage *)image; /** * 生成一張帶有邊框的圓形圖片 * * @param borderW 邊框?qū)挾? * @param borderColor 邊框顏色 * @param image 要添加邊框的圖片 * * @return 生成的帶有邊框的圓形圖片 */ + (UIImage *)imageWithBorder:(CGFloat)borderW color:(UIColor *)borderColor image:(UIImage *)image; @end
#import "UIImage+image.h" @implementation UIImage (image) + (UIImage *)imageWithClipImage:(UIImage *)image{ + //1.開啟跟原始圖片一樣大小的上下文 UIGraphicsBeginImageContextWithOptions(image.size, NO, 0); //2.設(shè)置一個(gè)圓形裁剪區(qū)域 //2.1繪制一個(gè)圓形 UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, image.size.width, image.size.height)]; //2.2.把圓形的路徑設(shè)置成裁剪區(qū)域 [path addClip];//超過裁剪區(qū)域以外的內(nèi)容都給裁剪掉 //3.把圖片繪制到上下文當(dāng)中(超過裁剪區(qū)域以外的內(nèi)容都給裁剪掉) [image drawAtPoint:CGPointZero]; //4.從上下文當(dāng)中取出圖片 UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); //5.關(guān)閉上下文 UIGraphicsEndImageContext(); return newImage; } + (UIImage *)imageWithBorder:(CGFloat)borderW color:(UIColor *)borderColor image:(UIImage *)image{ //1.開啟一個(gè)上下文 CGSize size = CGSizeMake(image.size.width + 2 * borderW, image.size.height + 2 * borderW); UIGraphicsBeginImageContextWithOptions(size, NO, 0); //2.繪制大圓,顯示出來 UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, size.width, size.height)]; [borderColor set]; [path fill]; //3.繪制一個(gè)小圓,把小圓設(shè)置成裁剪區(qū)域 UIBezierPath *clipPath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(borderW, borderW, image.size.width, image.size.height)]; [clipPath addClip]; //4.把圖片繪制到上下文當(dāng)中 [image drawAtPoint:CGPointMake(borderW, borderW)]; //5.從上下文當(dāng)中取出圖片 UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); //6.關(guān)閉上下文 UIGraphicsEndImageContext(); return newImage; }
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
ios swift3.0實(shí)現(xiàn)二維碼掃描、生成、識(shí)別示例代碼
本篇文章主要介紹了ios swift3.0實(shí)現(xiàn)二維碼掃描、生成、識(shí)別示例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-02-02CAMediaTiming ( 時(shí)間協(xié)議)詳解及實(shí)例代碼
這篇文章主要介紹了CAMediaTiming / 時(shí)間協(xié)議詳解及實(shí)例代碼的相關(guān)資料,這里附有實(shí)例代碼,幫助大家學(xué)習(xí)參考,需要的朋友可以參考下2016-12-12在IOS中為什么使用多線程及多線程實(shí)現(xiàn)的三種方法
這篇文章給大家介紹在IOS中為什么使用多線程及多線程實(shí)現(xiàn)的三種方法,基本上使用這三種方法實(shí)現(xiàn)多線程(NSThread Grand Centeral Dispatch(GCD) NSOperation和NSOperationQueue),感興趣的朋友可以參考下本篇文章2015-11-11解決iOS11圖片下拉放大出現(xiàn)信號(hào)欄白條的bug問題
這篇文章主要介紹了iOS11圖片下拉放大出現(xiàn)信號(hào)欄白條的bug問題,需要的朋友參考下吧2017-09-09配置mac啟動(dòng)項(xiàng)的3種方式總結(jié)
這篇文章主要給大家介紹了關(guān)于配置mac啟動(dòng)項(xiàng)的3種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-02-02詳解ios中的SQL數(shù)據(jù)庫文件加密 (使用sqlcipher)
本篇文章主要介紹了ios中的SQL數(shù)據(jù)庫文件加密 (使用sqlcipher),具有一定的參考價(jià)值,這里整理了詳細(xì)的代碼,感興趣的小伙伴們可以參考一下。2016-12-12IOS 中UIImageView響應(yīng)點(diǎn)擊事件
這篇文章主要介紹了IOS 中UIImageView響應(yīng)點(diǎn)擊事件的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-09-09