前一段时间在做一个社交类APP时,需要有朋友圈的功能,所以需要对发布的图片进行压缩体积的操作,在google上找了一些方法,发现了 一些方法,最终,选择了系统原生的按比例压缩图片体积的方法,在保证图片不糊的情况下,可以将1、2M左右的图片压缩到200K(或更少)的体积。
方法如下:
/**
压缩图片至指定的体积
@param image 图片
@param maxLength 最大体积KB为单位
@return 压缩后的图片data数据
*/
+ (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;
}
首先将图片转为NSData格式,然后判断data的长度,再根据长度进行一定比例的缩放,然后将缩放好的NSData文件上传至服务器
网友评论