首页 > 代码库 > 裁剪出环形图片
裁剪出环形图片
1:首先将一张图片裁剪成圆形图片,,
/**圆形图片裁剪*/- (UIImage *)wjf_circleImage { //利用self生成一张圆形图片 // 1.开启图形上下文 UIGraphicsBeginImageContextWithOptions(self.size,NO,0); // 2.描述圆形路径 UIBezierPath*path = [UIBezierPathbezierPathWithOvalInRect:CGRectMake(0,0, self.size.width,self.size.height)]; // 3.设置裁剪区域 [pathaddClip]; // 4.画图 [selfdrawAtPoint:CGPointZero]; // 5.取出图片 UIImage*image =UIGraphicsGetImageFromCurrentImageContext(); // 6.关闭上下文 UIGraphicsEndImageContext(); returnimage;}
2:用CGContextClearRect 的功能 制作环形图片
- (UIImage*)getClearRectImage:(UIImage*)image{ UIGraphicsBeginImageContextWithOptions(image.size,NO,0.0f); CGContextRefctx =UIGraphicsGetCurrentContext(); //默认绘制的内容尺寸和图片一样大,从某一点开始绘制 [imagedrawAtPoint:CGPointZero]; CGFloatbigRaduis = image.size.width/5; CGRectcirleRect =CGRectMake(image.size.width/2-bigRaduis, image.size.height/2-bigRaduis, bigRaduis*2, bigRaduis*2); //CGContextAddArc(ctx,image.size.width/2-bigRaduis,image.size.height/2-bigRaduis, bigRaduis, 0.0, 2*M_PI, 0); CGContextAddEllipseInRect(ctx,cirleRect); CGContextClip(ctx); CGContextClearRect(ctx,cirleRect); UIImage*newImage =UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); returnnewImage;}
如果你的图片是正方形的话,就大功告成了,但是你的图片是长方形呢,不用怕.
注:将长方形图片变成正方形图片:
- (UIImage * ) getSquareImage: (UIImage *) image RangeCGRect: (CGRect) range centerBool: (BOOL) centerBool { /*如若centerBool为Yes则是由中心点取mCGRect范围的图片*/ floatimgWidth = image.size.width; floatimgHeight = image.size.height; floatviewWidth = range.size.width; floatviewHidth = range.size.height; CGRectrect; if (centerBool) rect = CGRectMake((imgWidth - viewWidth) / 2, (imgHeight - viewHidth) / 2, viewWidth, viewHidth); else { if (viewHidth { if (imgWidth <= imgHeight) { rect = CGRectMake(0, 0, imgWidth, imgWidth * viewHidth / viewWidth); } else { floatwidth = viewWidth * imgHeight / viewHidth; floatx = (imgWidth - width) / 2; if (x > 0) { rect = CGRectMake(x, 0, width, imgHeight); } else { rect = CGRectMake(0, 0, imgWidth, imgWidth * viewHidth / viewWidth); } } } else { if (imgWidth <= imgHeight) { floatheight = viewHidth * imgWidth / viewWidth; if (height < imgHeight) { rect = CGRectMake(0, 0, imgWidth, height); } else { rect = CGRectMake(0, 0, viewWidth * imgHeight / viewHidth, imgHeight); } } else { floatwidth = viewWidth * imgHeight / viewHidth; if (width < imgWidth) { floatx = (imgWidth - width) / 2; rect = CGRectMake(x, 0, width, imgHeight); } else { rect = CGRectMake(0, 0, imgWidth, imgHeight); } } } } CGImageRefSquareImageRef = CGImageCreateWithImageInRect(image.CGImage, rect); CGRectSquareImageBounds = CGRectMake(0, 0, CGImageGetWidth(SquareImageRef), CGImageGetHeight(SquareImageRef)); UIGraphicsBeginImageContext(SquareImageBounds.size); CGContextRefcontext = UIGraphicsGetCurrentContext(); CGContextDrawImage(context, SquareImageBounds, SquareImageRef); UIImage * SquareImage = [UIImageimageWithCGImage: SquareImageRef]; UIGraphicsEndImageContext(); returnSquareImage;}
当然这是就用到了UIimage的size的属性了.
CGSize size = yuanlai.size;float imageSize;NSLog(@"size==height%f====width%f",size.height,size.width);if(size.height>= size.width) { imageSize = size.width;}else{ imageSize = size.height;}
裁剪出环形图片
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。