iOS如何裁剪圓形頭像_IOS

來源:互聯網
上載者:User

本文執行個體為大家介紹了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);   }

以上就是本文的全部內容,希望對大家的學習有所協助。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.