美文网首页
iOS 裁剪图片

iOS 裁剪图片

作者: 开心的小赵 | 来源:发表于2021-02-22 14:22 被阅读0次

按大小裁剪为指定的尺寸并解决图片裁剪之后显示不正确的问题

+ (UIImage *)cutCenterImageSize:(CGSize)size iMg:(UIImage *)img {

    CGFloat scale = [UIScreen mainScreen].scale;

    size.width = size.width*scale;

    size.height = size.height *scale;

    CGSize imageSize = img.size;

    CGRect rect;

    //根据图片的大小计算出图片中间矩形区域的位置与大小

    if (imageSize.width > imageSize.height) {

        float leftMargin = (imageSize.width - imageSize.height) *0.5;

        rect = CGRectMake(leftMargin,0, imageSize.height, imageSize.height);

    }else{

        float topMargin = (imageSize.height - imageSize.width) *0.5;

        rect = CGRectMake(0, topMargin, imageSize.width, imageSize.width);

    }
//记录旋转方向
    CGAffineTransform transform = CGAffineTransformIdentity;
    switch (img.imageOrientation) {
        case UIImageOrientationDown:
        case UIImageOrientationDownMirrored:
            transform = CGAffineTransformTranslate(transform, img.size.width, img.size.height);
            transform = CGAffineTransformRotate(transform,M_PI);
            break;
            
        case UIImageOrientationLeft:
        case UIImageOrientationLeftMirrored:
            transform = CGAffineTransformTranslate(transform, img.size.width,0);
            transform = CGAffineTransformRotate(transform,M_PI_2);
            break;
            
        case UIImageOrientationRight:
        case UIImageOrientationRightMirrored:
            transform = CGAffineTransformTranslate(transform,0, img.size.height);
            transform = CGAffineTransformRotate(transform, -M_PI_2);
            break;
        default:
            break;
    }
    

    

    CGImageRef imageRef = img.CGImage;

    //截取中间区域矩形图片

    CGImageRef imageRefRect =CGImageCreateWithImageInRect(imageRef, rect);

    

    UIImage *tmp = [[UIImage alloc] initWithCGImage:imageRefRect];

    CGImageRelease(imageRefRect);

    

    UIGraphicsBeginImageContext(size);

    CGRect rectDraw =CGRectMake(0,0, size.width, size.height);

    [tmp drawInRect:rectDraw];

    // 从当前context中创建一个改变大小后的图片

    tmp = UIGraphicsGetImageFromCurrentImageContext();

    

    // 使当前的context出堆栈

    UIGraphicsEndImageContext();
    // 旋转为正确的方向
    CGContextRef ctx = CGBitmapContextCreate(NULL, tmp.size.width, tmp.size.height,
                                                 CGImageGetBitsPerComponent(tmp.CGImage),0,
                                                 CGImageGetColorSpace(tmp.CGImage),
                                                 CGImageGetBitmapInfo(tmp.CGImage));
    CGContextConcatCTM(ctx, transform);
    

    return tmp;

}

相关文章

  • 【iOS】图片裁剪

    【iOS】图片裁剪 Demo地址

  • [iOS] 图像处理:一种高效裁剪图片圆角的算法

    [iOS] 图像处理:一种高效裁剪图片圆角的算法 [iOS] 图像处理:一种高效裁剪图片圆角的算法

  • 【iOS】图片裁剪

    ####【iOS】图片裁剪 UIImage *imageTop=[UIImage imageNamed:@"111...

  • iOS 头像裁剪、图片裁剪、微信头像裁剪

    iOS 头像裁剪、图片裁剪、微信头像裁剪 关于图片裁剪,基本上所有涉及到c端用户带基本信息的App基本都会用到,使...

  • iOS裁剪图片

    工作中突然用到了压缩图片展示缩略图被压扁和拉伸的现象,于是先按比例压缩然后再进行裁剪。类似UIView中的UIVi...

  • iOS 图片裁剪

    1、开启位图上下文 2、获取上下文 3、对位图上下文添加裁剪的范围,并对齐裁剪 4、从位图上下文中获取已经裁剪的图...

  • iOS 图片裁剪

    写在前面:实际工作中,有时候需要按照需求将图片裁剪成圆形,或者你需要的形状。这里以圆形为例。 核心:void CG...

  • iOS图片裁剪

    在iOS开发过程中,经常会遇到上传图片的需求,有时获取到图片之后需要裁剪一下,而系统提供的方法只能裁剪出一个正方形...

  • iOS 图片裁剪

    图片裁剪根据需求自行设置newSize如果是等比例裁剪(宽高比不变的情况下),可将从相册或者相机拿到的图片获取im...

  • iOS 图片裁剪

网友评论

      本文标题:iOS 裁剪图片

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