1、开启位图上下文
//获取UIImage对象,显示到imageView上
//创建位图,开启图片
//size 位图大小
//opaque alpha YES 不透明, NO透明
//scale 获取生成图片大小 位图大小:20*20 生成图片大小是:(20*scale*20*scale)
UIGraphicsBeginImageContextWithOptions(img.size, NO, 1);
2、获取上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();
//在自定义的view的drawRect方法里,调用UIGraphicsGetCurrentContext获取的上下文,而在此处是获取的图层上下文(Layer Graphics Context)
3、对位图上下文添加裁剪的范围,并对齐裁剪
CGContextAddEllipseInRect(ctx, CGRectMake(25, 25, img.size.width/2, img.size.height/2));
CGContextClip(ctx);
4、从位图上下文中获取已经裁剪的图片
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
5、结束位图编辑
UIGraphicsEndImageContext();
6、图片的保存
self.imageView.image = newImage;
NSData *imgData = UIImagePNGRepresentation(newImage);
[imgData writeToFile:@"/Users/apple/Desktop/new.png" atomically:YES];
}
注意:假如想在裁剪的图片外部加边框类似的东西,此时需要在第4步之前添加:
CGContextSetLineWidth(ctx, 3);
CGContextSetRGBStrokeColor(ctx, 0, 1.0, 0, 1);
CGContextAddEllipseInRect(ctx, CGRectMake(25, 25, img.size.width/2, img.size.height/2));
CGContextStrokePath(ctx);
我只是加了一个宽度为1,颜色为绿色,和裁剪图片一样大小的圆,此圆在图片外面。
网友评论