根据给出的字节大小压缩图片

2024-03-14  本文已影响0人  CY水漆

项目中微信分享需求,微信官方给出图片不能过大,经测试当图片大于1M时(1024*1024),微信会报错,导致有些图片过大必须做压缩处理,本方法使用的事二分法加图片绘制,比寻常的循环压缩要快,本人亲测有效,代码直接粘贴复制即可使用

- (UIImage*)compressImageSize:(UIImage*)imagetoByte:(NSUInteger)maxLength {

    UIImage*resultImage = image;

    NSData *data = UIImageJPEGRepresentation(resultImage, 1);

    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);  // Use image to draw (drawInRect:), image is larger but more compression time  // Use result image to draw, image is smaller but less compression time 

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

        resultImage =UIGraphicsGetImageFromCurrentImageContext();

        UIGraphicsEndImageContext();

        data =UIImageJPEGRepresentation(resultImage,1);

    }

    returnresultImage;

}

上一篇 下一篇

猜你喜欢

热点阅读