美文网首页
图片裁剪

图片裁剪

作者: 千里从 | 来源:发表于2017-07-27 10:46 被阅读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];

    相关文章

      网友评论

          本文标题:图片裁剪

          本文链接:https://www.haomeiwen.com/subject/kayekxtx.html