iOS開發之圖片壓縮

爲何要對圖片進行壓縮?

在開發圖片上傳功能時,通常對圖片的大小都有所限制(通常100kb之內),確保上傳速度和服務器內存資源的合理利用。大多數狀況下,從移動設備直接獲取到圖片都不知足。 好比使用蘋果設備拍照獲取的照片,通常大小在5~10M. 像素越高的設備,照片通常越大。在圖片大小超出預期時,就須要對於照片進行壓縮。服務器

圖片壓縮有哪些方法?

圖片壓縮的方式分兩類:code

  1. 尺寸壓縮
  2. 質量壓縮

尺寸壓縮

#pragma mark - 將圖片進行縮處理
- (UIImage *)scaleToMaxFileSize:(CGFloat)maxFileSize
                   withMinWidth:(CGFloat)minWidth
{
    UIImage *newImage = [self copy];
    
    CGFloat width = newImage.size.width+10;
    NSData *imageData;
    do {
        width -= 10;
        newImage = [newImage scaleToWidth:width];
        imageData = UIImageJPEGRepresentation(newImage, 1);
    } while ([imageData length] > maxFileSize&&width>minWidth);
    return newImage;
}

- (UIImage *)scaleToWidth:(CGFloat)width
{
    UIImage *sourceImage = [self copy];
    
    CGSize imageSize = sourceImage.size;
    CGFloat targetHeight = (width / imageSize.width) * imageSize.height;
    
    CGSize toSize = CGSizeMake(width, targetHeight);
    UIImage *newImage = [sourceImage scaleToSize:toSize];
    return newImage;
}

質量壓縮

NSData *imageData = UIImageJPEGRepresentation(image, 1);

UIKIT_EXTERN NSData * __nullable UIImageJPEGRepresentation(UIImage * __nonnull image, CGFloat compressionQuality); compressionQuality 壓縮係數,推薦compressionQuality>0.95圖片


在實際開發中,經常須要質量壓縮和尺寸壓縮結合使用,才能知足需求。內存

相關文章
相關標籤/搜索