1.本文摘自:http://www.cocoachina.com/bbs/read.php?tid-20940.html

 

  • #import <Foundation/Foundation.h>
  • @interface UIImage (UIImageExt)
  • - (UIImage*)imageByScalingAndCroppingForSize:(CGSize)targetSize;
  • @end



  • 复制代码
  • #import "UIImageExt.h"
  • @implementation UIImage (UIImageExt)
  • - (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;
  • }
  • @end
  •  

    相关文章: