在iOS中上传图片到服务器前,最佳实践是如何优化图片的大小呢?
这些图片可以来自用户的图库,也可以直接从UIPicker - 相机模式获取。
我有一些要求:最小上传分辨率和希望的最大上传大小。
假设kMaxUploadSize = 50 kB 和 kMinUploadResolution = 1136 * 640
目前我的做法是:
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;
每个循环花费的时间非常长,几秒钟,这导致在有效发送图像到服务器之前出现了非常长的延迟。
是否有任何方法/想法/策略?
非常感谢!