ios 图片处理( 1.按比例缩放 2.指定宽度按比例缩放)

来源:互联网 发布:美国本科预科 知乎 编辑:程序博客网 时间:2024/05/16 19:28

//按比例缩放,size 是你要把图显示到 多大区域 CGSizeMake(300, 140)

-(UIImage *) imageCompressForSize:(UIImage *)sourceImage targetSize:(CGSize)size{


    UIImage *newImage = nil;

    CGSize imageSize = sourceImage.size;

    CGFloat width = imageSize.width;

    CGFloat height = imageSize.height;

    CGFloat targetWidth = size.width;

    CGFloat targetHeight = size.height;

    CGFloat scaleFactor = 0.0;

    CGFloat scaledWidth = targetWidth;

    CGFloat scaledHeight = targetHeight;

    CGPoint thumbnailPoint = CGPointMake(0.0, 0.0);


    if(CGSizeEqualToSize(imageSize, size) == NO){


        CGFloat widthFactor = targetWidth / width;

        CGFloat heightFactor = targetHeight / height;


        if(widthFactor > heightFactor){

            scaleFactor = widthFactor;


        }

        else{


            scaleFactor = heightFactor;

        }

        scaledWidth = width * scaleFactor;

        scaledHeight = height * scaleFactor;


        if(widthFactor > heightFactor){


            thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5;

        }else if(widthFactor < heightFactor){


            thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5;

        }

    }


    UIGraphicsBeginImageContext(size);


    CGRect thumbnailRect = CGRectZero;

    thumbnailRect.origin = thumbnailPoint;

    thumbnailRect.size.width = scaledWidth;

    thumbnailRect.size.height = scaledHeight;


    [sourceImage drawInRect:thumbnailRect];


    newImage = UIGraphicsGetImageFromCurrentImageContext();

    if(newImage == nil){

        NSLog(@"scale image fail");

    }


    UIGraphicsEndImageContext();

    return newImage;

}


 

//指定宽度按比例缩放

-(UIImage *) imageCompressForWidth:(UIImage *)sourceImage targetWidth:(CGFloat)defineWidth{


    UIImage *newImage = nil;

    CGSize imageSize = sourceImage.size;

    CGFloat width = imageSize.width;

    CGFloat height = imageSize.height;

    CGFloat targetWidth = defineWidth;

    CGFloat targetHeight = height / (width / targetWidth);

    CGSize size = CGSizeMake(targetWidth, targetHeight);

    CGFloat scaleFactor = 0.0;

    CGFloat scaledWidth = targetWidth;

    CGFloat scaledHeight = targetHeight;

    CGPoint thumbnailPoint = CGPointMake(0.0, 0.0);


    if(CGSizeEqualToSize(imageSize, size) == NO){


        CGFloat widthFactor = targetWidth / width;

        CGFloat heightFactor = targetHeight / height;


        if(widthFactor > heightFactor){

            scaleFactor = widthFactor;

        }

        else{

            scaleFactor = heightFactor;

        }

        scaledWidth = width * scaleFactor;

        scaledHeight = height * scaleFactor;


        if(widthFactor > heightFactor){


            thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5;


        }else if(widthFactor < heightFactor){


            thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5;

        }

    }


    UIGraphicsBeginImageContext(size);


    CGRect thumbnailRect = CGRectZero;

    thumbnailRect.origin = thumbnailPoint;

    thumbnailRect.size.width = scaledWidth;

    thumbnailRect.size.height = scaledHeight;


    [sourceImage drawInRect:thumbnailRect];


    newImage = UIGraphicsGetImageFromCurrentImageContext();


    if(newImage == nil){


        NSLog(@"scale image fail");

    }

    UIGraphicsEndImageContext();

    return newImage;

}

0 0
原创粉丝点击