iOS 图片裁剪

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,颜色为绿色,和裁剪图片一样大小的圆,此圆在图片外面。

你可能感兴趣的:(iOS 图片裁剪)