图片裁切2:
核心代码: void CGContextClip(CGContextRef c)
/**
图片裁切
*/
#import "ViewController.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *iconView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
/**
* 画一个外边框+裁切圆形图
*/
//1、加载原来图片
UIImage *oldImage = [UIImage imageNamed:@"me"];
//2、开启上下文
CGFloat borderW = 2;//圆环的宽度
CGFloat imageW = oldImage.size.width + 2 * borderW;
CGFloat imageH = oldImage.size.height + 2 * borderW;
CGSize imageSize = CGSizeMake(imageW, imageH);
UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0.0);
//3、取得当前上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();
//4、画边框(大图)
[[UIColor whiteColor] set];
CGFloat bigRadius = imageW * 0.5;//大圆半径
CGFloat centerX = bigRadius;//圆心
CGFloat centerY = bigRadius;//圆心
CGContextAddArc(ctx, centerX, centerY, bigRadius, 0, M_PI * 2, 0);
//5、画大圆
CGContextFillPath(ctx);
//6、小圆
CGFloat smallRadius = bigRadius - borderW;
CGContextAddArc(ctx, centerX, centerY, smallRadius, 0, M_PI * 2, 0);
//裁剪
CGContextClip(ctx);
//7、画图
[oldImage drawInRect:CGRectMake(borderW, borderW, oldImage.size.width, oldImage.size.height)];
//取图
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
//结束上下文
UIGraphicsEndImageContext();
self.iconView.image = newImage;
}
- (void) testCircleImg
{
/**
* 裁切一个圆形图显示
*/
//1、加载原来图片
UIImage *oldImage = [UIImage imageNamed:@"me"];
//2、开启上下文
UIGraphicsBeginImageContextWithOptions(oldImage.size, NO, 0.0);
//3、取得当前上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();
//4、画圆
CGRect circileRect = CGRectMake(0, 0, oldImage.size.width, oldImage.size.height);
CGContextAddEllipseInRect(ctx, circileRect);
//5、裁切
//按照当前的路径形状裁剪,超出这个形状以外的内容都不现实
CGContextClip(ctx);
//6、画图
//将图片画上去
[oldImage drawInRect:circileRect];
//7、取图
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
//8、关闭上下文
UIGraphicsEndImageContext();
//9、写出文件(未成功)
NSData *data = UIImagePNGRepresentation(newImage);
NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]stringByAppendingPathComponent:@"news.png"];
[data writeToFile:path atomically:YES];
//10、显示图片
self.iconView.image = newImage;
}
@end
图片裁切2:
最新推荐文章于 2021-03-16 23:53:33 发布