压缩照片

-(UIImage *)compressImage:(UIImage *)image

{

    @autoreleasepool {

        //压缩图片尺寸

        float  scales = image.size.height / image.size.width;

        UIImage *normalImg;

        NSData *newData;

        /*

         如果需要改动被压大小,调整scale,而不是kk或aa

         */

        if (image.size.width > 1000 || image.size.height > 1000) {//这里的1000就是scale,所有的都要随着改变

            if (scales > 1) {

                CGSize newSize = CGSizeMake(1000 / scales, 1000);

                UIGraphicsBeginImageContext(newSize);

                [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];

                normalImg = UIGraphicsGetImageFromCurrentImageContext();

            }else {

                CGSize newSize = CGSizeMake(1000 ,1000 * scales);

                UIGraphicsBeginImageContext(newSize);

                [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];

                normalImg = UIGraphicsGetImageFromCurrentImageContext();

            }

        }

        else {

            normalImg=image;

        }

        CGSize newSize = CGSizeMake(normalImg.size.width, normalImg.size.height);

        UIGraphicsBeginImageContext(newSize);

        [normalImg drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];

        UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();

        UIGraphicsEndImageContext();

        

        //图片压缩系数

        float kk = 1.0f;

        //图片压缩系数变化步长(可变)

        float aa = 0.1f;

        //压缩后的大小

        int mm;

        mm=(int)UIImageJPEGRepresentation(newImage, kk).length;

        

        while (mm/1024 > 100) {

            if (kk > aa+aa/10) {

                kk -= aa;

                mm = (int)UIImageJPEGRepresentation(newImage, kk).length;

            }else{

                aa /= 10;

            }

        }

        newData = UIImageJPEGRepresentation(newImage, kk);//最后压缩结果

        NSLog(@"11111------------===%ld",(long)newData.length/1024);

        if (newData.length/1024 > 100) {

            return nil;

        }else{

            UIImage *image = [UIImage imageWithData:newData];

            return image;

        }

    }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值