动态缩小UIImage的函数

有时候需要动态缩小图片,这样你可以用UIImage来缩小图片,代码如下:

@implementation UIImage (Extras) 
#pragma mark - 
#pragma mark Scale and crop image 
- (UIImage*)imageByScalingAndCroppingForSize:(CGSize)targetSize 

UIImage *sourceImage = self; 
UIImage *newImage = nil; 
CGSize imageSize = sourceImage.size; 
CGFloat width = imageSize.width; 
CGFloat height = imageSize.height; 
CGFloat targetWidth = targetSize.width; 
CGFloat targetHeight = targetSize.height; 
CGFloat scaleFactor = 0.0; 
CGFloat scaledWidth = targetWidth; 
CGFloat scaledHeight = targetHeight; 
CGPoint thumbnailPoint = CGPointMake(0.0,0.0); 
if (CGSizeEqualToSize(imageSize, targetSize) == NO) 

CGFloat widthFactor = targetWidth / width; 
CGFloat heightFactor = targetHeight / height; 
if (widthFactor > heightFactor) 
scaleFactor = widthFactor; // scale to fit height 
else 
scaleFactor = heightFactor; // scale to fit width 
scaledWidth = width * scaleFactor; 
scaledHeight = height * scaleFactor; 
// center the image 
if (widthFactor > heightFactor) 

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

else 
if (widthFactor < heightFactor) 

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


UIGraphicsBeginImageContext(targetSize); // this will crop 
CGRect thumbnailRect = CGRectZero; 
thumbnailRect.origin = thumbnailPoint; 
thumbnailRect.size.width = scaledWidth; 
thumbnailRect.size.height = scaledHeight; 
[sourceImage drawInRect:thumbnailRect]; 
newImage = UIGraphicsGetImageFromCurrentImageContext(); 
if(newImage == nil) 
NSLog(@"could not scale image"); 
//pop the context to get back to the default 
UIGraphicsEndImageContext(); 
return newImage; 
}

 

 
posted @ 2012-11-18 22:47  JackyYang7  阅读(192)  评论(0)    收藏  举报