reduce camera/photo library image file size for less than 100 KB in iphone
Solution 1
Easiest way to reduce image size in kilos is to reduce the size in pixels! Scale it smaller:
CGFloat scaleSize = 0.2f;
UIImage *smallImage = [UIImage imageWithCGImage:image.CGImage
scale:scaleSize
orientation:image.imageOrientation];
Solution 2
Apple's docs state:
The quality of the resulting JPEG image, expressed as a value from 0.0 to 1.0. The value 0.0 represents the maximum compression (or lowest quality) while the value 1.0 represents the least compression (or best quality).
And since the compression quality is a CGFloat, it supports decimal places beyond the tenths place. That being said, try:
NSData *imageData = UIImageJPEGRepresentation(image, 0.032);
Solution 3
First resize the image with below method:
- (UIImage *)resizeImage:(UIImage*)image newSize:(CGSize)newSize {
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
call this by:
UIImage *newImage=yourImage;
CGSize size=CGSizeMake(newImage.size.width/8,newImage.size.height/8);
newImage=[self resizeImage:newImage newSize:size];
And finally compressed your image as required:
NSData *imageData = UIImageJPEGRepresentation(newImage, 0.5);
NSLog(@"Size of image = %lu KB",(imageData.length/1024));
Comments
-
Poooyak almost 2 years
I want to reduce image file size that take from
UIImagePickerController
. I use this methodNSData *imageData = UIImageJPEGRepresentation(image, 0.1);
but it reduce 2.2 MB image file size to 300 KB I want my image file size become less than 100 KB.
-
Poooyak over 11 yearsit's not reduce than 300 kb
-
Lefteris over 11 yearsExactlly! A large image can't be downsized to 100K in jpeg format, even at highest compression level, so idea is to resize it, then compress it.
-
Poooyak over 11 years@Lefteris I use this method and instead of 0.2 for scalesize I set it 5 to reduce image size 5 times and then use the previous method but the file size didn't change.
-
JOM over 11 yearsScale 1 (one) means same size as original image. You should use a value smaller than one, not bigger.
-
Christian about 8 yearsthis method returns exactly the same image but with a different density maintaining the same file size