reduce camera/photo library image file size for le

2019-03-16 09:27发布

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.

3条回答
2楼-- · 2019-03-16 09:50

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));
查看更多
唯我独甜
3楼-- · 2019-03-16 09:54

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];
查看更多
Explosion°爆炸
4楼-- · 2019-03-16 09:55

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);
查看更多
登录 后发表回答