@interface UIImage (Category) - (UIImage*)transformWidth:(CGFloat)width height:(CGFloat)height; @end @implementation UIImage (Category) - (UIImage*)transformWidth:(CGFloat)width height:(CGFloat)height { CGFloat destW = width; CGFloat destH = height; CGFloat sourceW = width; CGFloat sourceH = height; CGImageRef imageRef = self.CGImage; CGContextRef bitmap = CGBitmapContextCreate(NULL, destW, destH, CGImageGetBitsPerComponent(imageRef), 4*destW, CGImageGetColorSpace(imageRef), (kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst)); CGContextDrawImage(bitmap, CGRectMake(0, 0, sourceW, sourceH), imageRef); CGImageRef ref = CGBitmapContextCreateImage(bitmap); UIImage *result = [UIImageimageWithCGImage:ref]; CGContextRelease(bitmap); CGImageRelease(ref); return result; } @end
+(UIImage*)compressImageDownToPhoneScreenSize:(UIImage*)theImage{ UIImage * bigImage = theImage; float actualHeight = bigImage.size.height; float actualWidth = bigImage.size.width; float imgRatio = actualWidth / actualHeight; float maxRatio = 480.0 / 640; if(imgRatio != maxRatio ){ if(imgRatio < maxRatio){ imgRatio = 480.0 / actualHeight; actualWidth = imgRatio * actualWidth; actualHeight = 480.0; } else { imgRatio = 320.0 / actualWidth; actualHeight = imgRatio * actualHeight; actualWidth = 320.0; } } CGRect rect = CGRectMake(0.0, 0.0, actualWidth, actualHeight); UIGraphicsBeginImageContext(rect.size); [bigImage drawInRect:rect]; // scales image to rect theImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return theImage; }