图片按比例缩放

1.按比例缩放。

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

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

[sourceImagedrawInRect:thumbnailRect];

newImage = UIGraphicsGetImageFromCurrentImageContext();

if(newImage == nil){

    NSLog(@"scale image fail");

}

UIGraphicsEndImageContext();

return newImage;

}

2.指定宽度按比例缩放。

//指定宽度按比例缩放

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

[sourceImagedrawInRect:thumbnailRect];

newImage = UIGraphicsGetImageFromCurrentImageContext();

if(newImage == nil){

    NSLog(@"scale image fail");

}

UIGraphicsEndImageContext();

return newImage;

}

你可能感兴趣的:(图片按比例缩放)