2013-07-03 67 views

回答

6

您可以使用下面的方法来调整图片大小:

+ (UIImage *) imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize { 
    //UIGraphicsBeginImageContext(newSize); 
    UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0); 
    [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; 
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return newImage; 
} 
+ (UIImage *) imageWithImage: (UIImage*) sourceImage scaledToWidth: (float) i_width {//method to scale image accordcing to width 

    float oldWidth = sourceImage.size.width; 
    float scaleFactor = i_width/oldWidth; 

    float newHeight = sourceImage.size.height * scaleFactor; 
    float newWidth = oldWidth * scaleFactor; 

    UIGraphicsBeginImageContext(CGSizeMake(newWidth, newHeight)); 
    [sourceImage drawInRect:CGRectMake(0, 0, newWidth, newHeight)]; 
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return newImage; 
} 
2
- (void)viewDidLoad 
{ 
     [super viewDidLoad]; 
     // Create the image from a png file 
     imageOriginal = [UIImage imageNamed:@"bg-640by960.png"]; 
     imageView =[[UIImageView alloc] initWithImage:imageOriginal]; 
     imageView.tag=200; 

     // Get size of current image 
     size = [imageOriginal size]; 
// Frame location in view to show original image 
[imageView setFrame:CGRectMake(0, 0, size.width, size.height)]; 
[[self view] addSubview:imageView]; 
[self.view bringSubviewToFront:btnCrop]; 

//To resize image call below method 
[[self.view viewWithTag:200] removeFromSuperview]; 
[self squareImageWithImage:imageOriginal scaledToSize:CGSizeMake(200, 300)]; 
} 

- (UIImage *)squareImageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize 
{ 
double ratio; 
double delta; 
CGPoint offset; 

//make a new square size, that is the resized imaged width 
CGSize sz = CGSizeMake(newSize.width, newSize.width); 

//figure out if the picture is landscape or portrait, then 
//calculate scale factor and offset 
if (image.size.width > image.size.height) { 
    ratio = newSize.width/image.size.width; 
    delta = (ratio*image.size.width - ratio*image.size.height); 
    offset = CGPointMake(delta/2, 0); 
} else { 
    ratio = newSize.width/image.size.height; 
    delta = (ratio*image.size.height - ratio*image.size.width); 
    offset = CGPointMake(0, delta/2); 
} 

//make the final clipping rect based on the calculated values 
CGRect clipRect = CGRectMake(-offset.x, -offset.y, 
          (ratio * image.size.width) + delta, 
          (ratio * image.size.height) + delta); 


//start a new context, with scale factor 0.0 so retina displays get 
//high quality image 
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) { 
    UIGraphicsBeginImageContextWithOptions(sz, YES, 0.0); 
} else { 
    UIGraphicsBeginImageContext(sz); 
} 
UIRectClip(clipRect); 
[image drawInRect:clipRect]; 
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
imageView = 
[[UIImageView alloc] initWithImage:newImage]; 
[imageView setFrame:CGRectMake(60, 60, newSize.width, newSize.height)]; 
[self.view addSubview:imageView]; 
return newImage; 
} 
相关问题