图片压缩方法

来源:互联网 发布:foreach循环遍历数组 编辑:程序博客网 时间:2024/05/16 13:06
最近遇到从相册选择图片或者拍照之后的图片需要等比例压缩的问题,苹果给的方法

UIImageJPEGRepresentation();

压缩之后图片依然很大,不能满足要求,如下方法压缩效率非常高,从此妈妈再也不用担心压缩图片啦~~~~:

-(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;

        }elseif(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
原创粉丝点击