What is the best way to optimize image weight before uploading it to a server in iOS?
The image can be from the user's image library or directly for the UIPicker camera mode.
I have some requirements: minimum download resolution and desired maximum download size.
Let's say kMaxUploadSize = 50 kB and kMinUploadResolution = 1136 * 640
What am I doing now:
while (UIImageJPEGRepresentation(img,1.0).length > MAX_UPLOAD_SIZE){ img = [self scaleDown:img withFactor:0.1]; } NSData *imageData = UIImageJPEGRepresentation(img,1.0); -(UIImage*)scaleDown:(UIImage*)img withFactor:(float)f{ CGSize newSize = CGSizeMake(img.size.width*f, img.size.height*f); UIGraphicsBeginImageContextWithOptions(newSize, YES, 0.0); [img drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return scaledImage;
}
The time spent in each cycle is terrible, a few seconds, which leads to a very large delay before efficiently sending the image to the server.
Any approach / idea / strategy?
Thanks a lot!
source share