IOS中图片压缩

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

方法一 像素压缩:

  • 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中图片压缩)