前一段時間在做一個社交類APP時,需要有朋友圈的功能,所以需要對發(fā)布的圖片進(jìn)行壓縮體積的操作,在google上找了一些方法,發(fā)現(xiàn)了 一些方法,最終,選擇了系統(tǒng)原生的按比例壓縮圖片體積的方法,在保證圖片不糊的情況下,可以將1、2M左右的圖片壓縮到200K(或更少)的體積。
方法如下:
/**
壓縮圖片至指定的體積
@param image 圖片
@param maxLength 最大體積KB為單位
@return 壓縮后的圖片data數(shù)據(jù)
*/
+ (NSData*)compressImageQuality:(UIImage*)image toByte:(NSInteger)maxLength {
CGFloatcompression =1;
NSData*data =UIImageJPEGRepresentation(image, compression);
while(data.length> maxLength *1024&& compression >0) {
if(data.length>1024*1024*10) {
compression -=0.5;
}
elseif(data.length>1024*1024*5) {
compression -=0.4;
}
elseif(data.length>1024*1024*3) {
compression -=0.3;
}
elseif(data.length>1024*1024) {
compression -=0.25;
}
elseif(data.length> maxLength)
{
compression -=0.1;
}
data =UIImageJPEGRepresentation(image, compression);
}
NSLog(@"壓縮后的data:%lu",data.length);
//UIImage *resultImage = [UIImage imageWithData:data];
returndata;
}
首先將圖片轉(zhuǎn)為NSData格式,然后判斷data的長度,再根據(jù)長度進(jìn)行一定比例的縮放,然后將縮放好的NSData文件上傳至服務(wù)器