reduce camera/photo library image file size for less than 100 KB in iphone

10,943

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));
Share:
10,943
Poooyak
Author by

Poooyak

iOS Developer

Updated on June 15, 2022

Comments

  • Poooyak
    Poooyak almost 2 years

    I want to reduce image file size that take from UIImagePickerController . I use this method

    NSData *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
    Poooyak over 11 years
    it's not reduce than 300 kb
  • Lefteris
    Lefteris over 11 years
    Exactlly! 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
    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
    JOM over 11 years
    Scale 1 (one) means same size as original image. You should use a value smaller than one, not bigger.
  • Christian
    Christian about 8 years
    this method returns exactly the same image but with a different density maintaining the same file size