具体实现返回NSData对象

图片质量压缩到某一范围内,如果后面用到多,可以抽成分类或者工具类,这里压缩递减比二分的运行时间长,二分可以限制下限。

- (NSData *)compressImage:(UIImage *)image toMaxFileSize:(NSUInteger)maxFileSize
{
    CGFloat min = 0;
    CGFloat max = 1;
    CGFloat mid = 0.5;
    NSData *imageData = UIImageJPEGRepresentation(image, mid);
    while (min < max) {
        mid = (max + min) / 2;
        imageData = UIImageJPEGRepresentation(image, mid);
        if (max < 0.05 || min > 0.95) { //避免造成死循环。
            break;
        }
        if ([imageData length] > maxFileSize) {
            max = mid;
        } else {
            if ([imageData length] >= 120 * 1024) {
                break;
            } else {
                min = mid;
            }
        }
    }
    return imageData;
}

你可能感兴趣的:(具体实现返回NSData对象)