nids
nids

Reputation: 73

how to compress image in iphone?

I m taking images from photo library.I have large images of 4-5 mb but i want to compress those images.As i need to store those images in local memory of iphone.for using less memory or for getting less memory warning i need to compress those images.

I don't know how to compress images and videos.So i want to know hot to compress images?

    UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];

    NSData* data = UIImageJPEGRepresentation(image,1.0);
    NSLog(@"found an image");

    NSString *path = [destinationPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.jpeg", name]];
    [data writeToFile:path atomically:YES]; 

This is the code for saving my image. I dont want to store the whole image as its too big. So, I want to compress it to a much smaller size as I'll need to attach multiple images.

Thanks for the reply.

Upvotes: 4

Views: 13074

Answers (3)

Vaibhav Sharma
Vaibhav Sharma

Reputation: 1123

NSData *UIImageJPEGRepresentation(UIImage *image, CGFloat compressionQuality);

OR

NSData *image_Data=UIImageJPEGRepresentation(image_Name,compressionQuality);

return image as JPEG. May return nil if image has no CGImageRef or invalid bitmap format. compressionQuality is 0(most) & 1(least).

Upvotes: 1

Krrish
Krrish

Reputation: 2256

UIImageJPEGRepresentation(UIImage,Quality);

1.0 means maximum Quality and 0 means minimum quality.

SO change the quality parameter in below line to reduce file size of the image

NSData* data = UIImageJPEGRepresentation(image,1.0);

Upvotes: 5

joerick
joerick

Reputation: 16448

You can choose a lower quality for JPEG encoding

NSData* data = UIImageJPEGRepresentation(image, 0.8);

Something like 0.8 shouldn't be too noticeable, and should really improve file sizes.

On top of this, look into resizing the image before making the JPEG representation, using a method like this:

+ (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize {
    UIGraphicsBeginImageContext(newSize);
    [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();    
    UIGraphicsEndImageContext();
    return newImage;
}

Source: The simplest way to resize an UIImage?

Upvotes: 13

Related Questions