控制上传图片大小

Posted 高晓牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了控制上传图片大小相关的知识,希望对你有一定的参考价值。

 图片上传问题:上传到服务器的图片建议压缩一下,因为iphone拍出的照片比较大,如果直接上传无论是上传还是下载都比较慢而且费流量,体验不好.

具体思路如下:

 

先调整分辨率,分辨率可以自己设定一个值,大于的就缩小到这分辨率,小余的就保持原本分辨率。然后在根据最终大小来设置压缩比,比如传入maxSize = 100k,最终计算大概这个大小的压缩比。基本上最终出来的图片数据根据当前分辨率能保持差不多的大小同时不至于太模糊,跟微信,微博最终效果应该是差不多的,代码仍然有待优化!

//控制图片大小

- (NSData *)resetSizeOfImageData:(UIImage *)source_image maxSize:(NSInteger)maxSize

{

    //先调整分辨率

    CGSize newSize = CGSizeMake(source_image.size.width, source_image.size.height);

    

    CGFloat tempHeight = newSize.height / 1024;

    CGFloat tempWidth = newSize.width / 1024;

    

    if (tempWidth > 1.0 && tempWidth > tempHeight) {

        newSize = CGSizeMake(source_image.size.width / tempWidth, source_image.size.height / tempWidth);

    }

    else if (tempHeight > 1.0 && tempWidth < tempHeight){

        newSize = CGSizeMake(source_image.size.width / tempHeight, source_image.size.height / tempHeight);

    }

    

    UIGraphicsBeginImageContext(newSize);

    [source_image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];

    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    

    //调整大小

    NSData *imageData = UIImageJPEGRepresentation(newImage,1.0);

    NSUInteger sizeOrigin = [imageData length];

    NSUInteger sizeOriginKB = sizeOrigin / 1024;

    if (sizeOriginKB > maxSize) {

        NSData *finallImageData = UIImageJPEGRepresentation(newImage,0.50);

        return finallImageData;

    }

    

    return imageData;

}

以上是关于控制上传图片大小的主要内容,如果未能解决你的问题,请参考以下文章

百度编辑器如何修改上传图片大小

怎么在js 里面限制上传图片的大小不能超过 1M?

怎么修改百度编辑器(Ueditor)的上传图片大小限制,PHP版的

小程序之批量上传图片

React+Antd+Antd-Img-Crop实现上传固定大小的裁剪头像或者图片(且可控制图片数量)

请问微信公众平台上传图片的数量是多少?或者上传上限是多少KB?谢谢!