图片压缩------微信分享(图片不能大于32kb否则调不起微信

2019-04-19  本文已影响0人  恩哼恩哼蹦擦擦GH

/*根据url返回UIimage*/

+(UIImage*) getImageFromURL:(NSString*)fileURL

{

    UIImage* result;

    NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:fileURL]];

    result = [UIImageimageWithData:data];

    returnresult;

}

#pragma mark - 压缩图片---小于32KB

+ (UIImage*)compressImage:(UIImage*)image toByte:(NSUInteger)maxLength {

    // Compress by quality

    CGFloatcompression =1;

    NSData*data =UIImageJPEGRepresentation(image, compression);

    if(data.length< maxLength)returnimage;

    CGFloatmax =1;

    CGFloatmin =0;

    for(inti =0; i <6; ++i) {

        compression = (max + min) /2;

        data =UIImageJPEGRepresentation(image, compression);

        if(data.length< maxLength *0.9) {

            min = compression;

        }elseif(data.length> maxLength) {

            max = compression;

        }else{

            break;

        }

    }

    UIImage*resultImage = [UIImageimageWithData:data];

    if(data.length< maxLength)returnresultImage;

    // Compress by size

    NSUIntegerlastDataLength =0;

    while(data.length> maxLength && data.length!= lastDataLength) {

        lastDataLength = data.length;

        CGFloatratio = (CGFloat)maxLength / data.length;

        CGSizesize =CGSizeMake((NSUInteger)(resultImage.size.width*sqrtf(ratio)),

                                 (NSUInteger)(resultImage.size.height*sqrtf(ratio)));// Use NSUInteger to prevent white blank

        UIGraphicsBeginImageContext(size);

        [resultImagedrawInRect:CGRectMake(0,0, size.width, size.height)];

        resultImage =UIGraphicsGetImageFromCurrentImageContext();

        UIGraphicsEndImageContext();

        data =UIImageJPEGRepresentation(resultImage, compression);

    }

    returnresultImage;

}

上一篇下一篇

猜你喜欢

热点阅读