Here is the code I used to compress the image
Code:
-(UIImage *)compressImage:(UIImage *)image{ NSData *imgData = UIImageJPEGRepresentation(image, 1); //1 it represents the quality of the image. NSLog(@"Size of Image(bytes):%ld",(unsigned long)[imgData length]); float actualHeight = image.size.height; float actualWidth = image.size.width; float maxHeight = 600.0; float maxWidth = 800.0; float imgRatio = actualWidth/actualHeight; float maxRatio = maxWidth/maxHeight; float compressionQuality = 0.5;//50 percent compression if (actualHeight > maxHeight || actualWidth > maxWidth){ if(imgRatio < maxRatio){ //adjust width according to maxHeight imgRatio = maxHeight / actualHeight; actualWidth = imgRatio * actualWidth; actualHeight = maxHeight; } else if(imgRatio > maxRatio){ //adjust height according to maxWidth imgRatio = maxWidth / actualWidth; actualHeight = imgRatio * actualHeight; actualWidth = maxWidth; } else{ actualHeight = maxHeight; actualWidth = maxWidth; } } CGRect rect = CGRectMake(0.0, 0.0, actualWidth, actualHeight); UIGraphicsBeginImageContext(rect.size); [image drawInRect:rect]; UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); NSData *imageData = UIImageJPEGRepresentation(img, compressionQuality); UIGraphicsEndImageContext(); NSLog(@"Size of Image(bytes):%ld",(unsigned long)[imageData length]); return [UIImage imageWithData:imageData]; }
So here is the code to use above
UIImage *org = [UIImage imageNamed:@"MacLehose Stage 7 Stunning Natural Sceneries.jpg"]; UIImage *imgCompressed = [self compressImage:org];
If you want to squeeze more
NSData *dataImage = UIImageJPEGRepresentation(imgCompressed, 0.0); NSLog(@"Size of Image(bytes):%ld",(unsigned long)[dataImage length]);
In the above way, I can compress the image from 2 MB to almost 50 KB.
source share