在開發圖片上傳功能時,通常對圖片的大小都有所限制(通常100kb之內),確保上傳速度和服務器內存資源的合理利用。大多數狀況下,從移動設備直接獲取到圖片都不知足。 好比使用蘋果設備拍照獲取的照片,通常大小在5~10M. 像素越高的設備,照片通常越大。在圖片大小超出預期時,就須要對於照片進行壓縮。服務器
圖片壓縮的方式分兩類:code
#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圖片
在實際開發中,經常須要質量壓縮和尺寸壓縮結合使用,才能知足需求。內存