图片裁剪

2017-07-27  本文已影响0人  千里从

//0.加载要裁剪的图片

UIImage * image = [UIImage imageNamed:@"dst2"];

//1.开启一个图形上下文对象 (图片类型 bitmap) 大小个图片一样大

//    UIGraphicsBeginImageContext(<#CGSize size#>)

//参数1:大小  参数2:是否不透明 参数3:缩放比

UIGraphicsBeginImageContextWithOptions(image.size, NO, 0.0);//0.0使用当前设备的缩放比

//2.获取刚刚开启的图形上下文对象

CGContextRef ctx = UIGraphicsGetCurrentContext();

//3.创建圆形路径

//3.1 计算圆心 (图片中心点)

CGPoint centerP = CGPointMake(image.size.width/2, image.size.height/2);

//3.2 计算半径 (图片最小边的一半)

CGFloat radius = MIN(image.size.width, image.size.height)/2;

UIBezierPath * path = [UIBezierPath bezierPathWithArcCenter:centerP radius:radius startAngle:0 endAngle:2 * M_PI clockwise:YES];

//4.添加 路径

CGContextAddPath(ctx, path.CGPath);

//5.执行裁剪

CGContextClip(ctx);

//6.绘制图片

[image drawAtPoint:CGPointZero];

//7.从图形上下文中获取图片

UIImage * getImage = UIGraphicsGetImageFromCurrentImageContext();

//7.1----------切割图片----------------------

//    计算 x y w g

CGFloat x = 0;

CGFloat y = (image.size.height - 2 * radius) / 2;

CGFloat w = 2 * radius;

CGFloat h = w;

//获取当前设备的缩放比

CGFloat scale = [UIScreen mainScreen].scale;

x *= scale;

y = y * scale;

w *= scale;

h *= scale;

//参数1:要切割的图片  参数2:切割区域

CGImageRef imageRef = CGImageCreateWithImageInRect(getImage.CGImage, CGRectMake(x, y, w, h));

// CGImageRef-->UIImage

getImage = [UIImage imageWithCGImage:imageRef];

//7.1----------切割图片----------------------

//8.结束图形上下文对象

UIGraphicsEndImageContext();

//9.使用图片

self.imageView.image = getImage;

//9.1 保存相册

//参数1:保存的图片  参数2:调用哪个类的方法  参数3:保存完毕要调用哪个方法  参数4:追踪信息

UIImageWriteToSavedPhotosAlbum(getImage, self, @selector(image:didFinishSavingWithError:contextInfo:), @"hello");

//9.2 保存到沙盒

//获取documents

NSString * docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

//拼接文件名

NSString * fileName = [docDir stringByAppendingPathComponent:@"001.png"];

//转化Data

NSData * imageData = UIImagePNGRepresentation(getImage);

//保存

[imageData writeToFile:fileName atomically:YES];

上一篇下一篇

猜你喜欢

热点阅读