缩小 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-07-30 15:50  GreyWolf  阅读(131)  评论(0编辑  收藏  举报