#define kDefaultPress 0.05
#define imgCompressTimeLimit 5
//压缩图片质量
- (NSData *)compressQualityWithMaxLength:(NSInteger)maxLength {
CGFloat maxByetLimit = maxLength*1024;
NSData *data = UIImageJPEGRepresentation(self, 1.0);
if (maxByetLimit==0) return data;
if (data.length < maxByetLimit) {
return data;
} else {
CGFloat max = 1;
CGFloat min = 0;
CGFloat compression = 1;
CGFloat size = data.length;
for (int i = 0; i < imgCompressTimeLimit; ++i) {
compression = (max + min) / 2;
data = UIImageJPEGRepresentation(self, compression);
if ((size - data.length) / size < kDefaultPress) {
break;
}
size = data.length;
if (data.length < maxByetLimit*0.9) {
min = compression;
} else if (data.length > maxByetLimit * 1.1) {
max = compression;
} else {
break;
}
}
}
return data;
}