02.12.2012 23:20:00 • Categories: Objective-C • Tags: UIImage, Objective-C
Objective-C: resize UIImage proportional
//the following is appropriate call to do this if img is the UIImage instance. //img=[img scaleProportionalToSize:CGSizeMake(320, 480)];@interface UIImage (UIImageFunctions)
-
(UIImage *) scaleToSize: (CGSize)size;
-
(UIImage *) scaleProportionalToSize: (CGSize)size; @end @implementation UIImage (UIImageFunctions)
-
(UIImage *) scaleToSize: (CGSize)size { // Scalling selected image to targeted size CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); CGContextRef context = CGBitmapContextCreate(NULL, size.width, size.height, 8, 0, colorSpace, kCGImageAlphaPremultipliedLast); CGContextClearRect(context, CGRectMake(0, 0, size.width, size.height));
if(self.imageOrientation == UIImageOrientationRight) { CGContextRotateCTM(context, -M_PI_2); CGContextTranslateCTM(context, -size.height, 0.0f); CGContextDrawImage(context, CGRectMake(0, 0, size.height, size.width), self.CGImage); } else CGContextDrawImage(context, CGRectMake(0, 0, size.width, size.height), self.CGImage);
CGImageRef scaledImage=CGBitmapContextCreateImage(context);
CGColorSpaceRelease(colorSpace); CGContextRelease(context);
UIImage *image = [UIImage imageWithCGImage: scaledImage];
CGImageRelease(scaledImage);
return image; }
-
(UIImage ) scaleProportionalToSize: (CGSize)size1 { if(self.size.width>self.size.height) { NSLog(@"LandScape"); size1=CGSizeMake((self.size.width/self.size.height)size1.height,size1.height); } else { NSLog(@"Potrait"); size1=CGSizeMake(size1.width,(self.size.height/self.size.width)*size1.width); }
return [self scaleToSize:size1]; }
@end