本文執行個體為大家介紹了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); }
以上就是本文的全部內容,希望對大家的學習有所協助。