杂物存放

- (UIImage*)imageByScalingAndCroppingWithImage:(UIImage *)sourceImage ForSize:(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 @ 2011-12-17 15:51  Gloolo  阅读(184)  评论(0编辑  收藏  举报