需求:把圖片壓縮上傳到服務(wù)器
方法一 像素壓縮:
- UIImageJPEGRepresentation
NSData *imageData = UIImageJPEGRepresentation(image, compression);
- UIImagePNGRepresentation
NSData *imageData = UIImagePNGRepresentation(image);
問題:之前沒有做調(diào)研效床,直接用了方法二,發(fā)現(xiàn)用戶下載圖片很慢权谁,有時候下載不下來剩檀,后來發(fā)現(xiàn)由于圖片太大运嗜。
原來UIImagePNGRepresentation(UIImage image)要比UIImageJPEGRepresentation(UIImage image, 1.0)返回的圖片數(shù)據(jù)量大很多
項目中做圖片上傳之前翩活,經(jīng)過測試同一張拍照所得照片png大小在8M,而JPG壓縮系數(shù)為0.75時候,大小只有1M。而且中鼠,將壓縮系數(shù)降低對圖片視覺上并沒有太大的影響具温。
像素壓縮,最大不能超過(如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% 的壓縮比。
方法二 尺寸壓縮
以后再談...