iOS 拍照上传慢,压缩上传图片---你没有想到的解决方法

上传图片的正确方式:上传图片到服务器一般是将图片NSData上传到服务器,服务器返回一个图片NSString地址,之后再将NSString的路径转为url并通过url请求去更新图片(图片此时更新的便是NSString)

上传的图片一般压缩方式是:
NSData *eachImgData = UIImageJPEGRepresentation(image, 0.5);


但,你可能会发现这样设置之后,上传还是比较慢,即使是把压缩比例设置为0.1 结果还是一样。

不过,如果你去查看上传之后的图片,就可以发现问题所在:


首先,你也许会看到图片大小  大概为200-300KB  为何这么小了  还是上传比较慢,或者加载比较慢,这是因为你忽略了一个图片分辨率的压缩过程,所以此时你要压缩的不只是图片大小,还是图片分辨率

然后,附上图片分辨率压缩代码:

//等比例压缩

+ (UIImage *) imageCompressForSize:(UIImage *)sourceImage targetSize:(CGSize)size {

    UIImage *newImage = nil;

    CGSize imageSize = sourceImage.size;

    CGFloat width = imageSize.width;

    CGFloat height = imageSize.height;

    CGFloat targetWidth = size.width;

    CGFloat targetHeight = size.height;

    CGFloat scaleFactor = 0.0;

    CGFloat scaledWidth = targetWidth;

    CGFloat scaledHeight = targetHeight;

    CGPoint thumbnailPoint = CGPointMake(0.0, 0.0);

    if(CGSizeEqualToSize(imageSize, size) == NO){

        CGFloat widthFactor = targetWidth / width;

        CGFloat heightFactor = targetHeight / height;

        if(widthFactor > heightFactor){

            scaleFactor = widthFactor;

        }

        else{

            scaleFactor = heightFactor;

        }

        scaledWidth = width * scaleFactor;

        scaledHeight = height * scaleFactor;

        if(widthFactor > heightFactor){

            thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5;

        }else if(widthFactor < heightFactor){

            thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5;

        }

    }

    

    UIGraphicsBeginImageContext(size);

    

    CGRect thumbnailRect = CGRectZero;

    thumbnailRect.origin = thumbnailPoint;

    thumbnailRect.size.width = scaledWidth;

    thumbnailRect.size.height = scaledHeight;

    [sourceImage drawInRect:thumbnailRect];

    newImage = UIGraphicsGetImageFromCurrentImageContext();

    

    if(newImage == nil){

        NSLog(@"scale image fail");

    }

    

    UIGraphicsEndImageContext();

    

    return newImage;

    

}


这样双重压缩,完美解决图片压缩问题。

猜你喜欢

转载自blog.csdn.net/android_liangyi/article/details/80001232