美文网首页
IOS中图片压缩

IOS中图片压缩

作者: 大美象 | 来源:发表于2017-02-16 12:39 被阅读342次

    需求:把图片压缩上传到服务器

    方法一 像素压缩:

    • UIImageJPEGRepresentation
    NSData *imageData = UIImageJPEGRepresentation(image, compression);
    
    • UIImagePNGRepresentation
       NSData *imageData = UIImagePNGRepresentation(image);
    

    问题:之前没有做调研,直接用了方法二,发现用户下载图片很慢,有时候下载不下来,后来发现由于图片太大。
    原来UIImagePNGRepresentation(UIImage image)要比UIImageJPEGRepresentation(UIImage image, 1.0)返回的图片数据量大很多
    项目中做图片上传之前,经过测试同一张拍照所得照片png大小在8M,而JPG压缩系数为0.75时候,大小只有1M。而且,将压缩系数降低对图片视觉上并没有太大的影响。

    像素压缩,最大不能超过(如200k)
    - (UIImage *)compressImage:(UIImage *)image toMaxFileSize:(NSInteger)maxFileSize {
        CGFloat compression = 0.9f;
        CGFloat maxCompression = 0.1f;
        NSData *imageData = UIImageJPEGRepresentation(image, compression);
        while (([imageData length]/1024 )> maxFileSize && compression > maxCompression) {
            compression -= 0.1;
            imageData = UIImageJPEGRepresentation(image, compression);
        }
        UIImage *compressedImage = [UIImage imageWithData:imageData];
        return compressedImage;
    }
    
    

    PNG 图片是无损压缩,并且支持 alpha 通道,而 JPEG 图片则是有损压缩,可以指定 0-100% 的压缩比。

    方法二 尺寸压缩

    以后再谈...

    相关文章

      网友评论

          本文标题:IOS中图片压缩

          本文链接:https://www.haomeiwen.com/subject/foocwttx.html