图片的压缩与裁剪

//图片根据不同的大小进行压缩

+(UIImage*)saveBitImage:(UIImage*)Image{

    

    NSData* dataImage = UIImageJPEGRepresentation(Image,1.0);

NSLog(@"imagesize:%d",dataImage.length/1024);

    NSUInteger sizeOrigin = [dataImage length];

    NSUInteger sizesizeOriginKB = sizeOrigin / 1024;

float a = 250;

float  b = (float)sizesizeOriginKB;

if (sizesizeOriginKB > 500)

{

a = 250;

}

else if(sizesizeOriginKB > 300)

{

a = 150;

}

else if(sizesizeOriginKB > 200)

{

a = 120;

}

else if(sizesizeOriginKB > 100)

{

a = 60;

}


float q = sqrt(a/b);

    // 图片大于500k要先进行压缩

    if (sizesizeOriginKB > 100)

{

NSLog(@"q:%f",q);

        CGSize sizeImage = [Image size];

        CGFloat iwidthSmall = sizeImage.width * q;

CGFloat iheightSmall = sizeImage.height * q;

        CGSize itemSizeSmall = CGSizeMake(iwidthSmall, iheightSmall);

        UIGraphicsBeginImageContext(itemSizeSmall);

        

        CGRect imageRectSmall = CGRectMake(0.0f, 0.0f, itemSizeSmall.width+2, itemSizeSmall.height+2);  //长和宽都增加2个像素,防止有些图片绘制旁边出现白线

        [Image drawInRect:imageRectSmall];

        

        UIImage *SmallImage = UIGraphicsGetImageFromCurrentImageContext();

        UIGraphicsEndImageContext();

        NSData *dataImageSend = UIImageJPEGRepresentation(SmallImage,0.85);

        

        dataImage = dataImageSend;

    }

    

    NSLog(@"压缩bit 后:%d",[dataImage length]/1024);

    return [UIImage imageWithData:dataImage];

}


//根据指定的大小进行等比例压缩

//图片压缩指定的宽高

+(UIImage*)saveBitImage:(UIImage*)Image WithWidth:(CGFloat)width andHeight:(CGFloat) height {

    

    NSData* dataImage = UIImageJPEGRepresentation(Image,1.0);

NSLog(@"imagesize:%d",dataImage.length/1024);

CGSize sizeImage = [Image size];

CGFloat scaleWidth = width;

CGFloat scaleHeight = height;

CGFloat wRate = width/sizeImage.width;

CGFloat hRate = height/sizeImage.height;

CGFloat scaleRate = 0.0;

if (wRate > hRate)

{

scaleRate = wRate;

}

else

{

scaleRate = hRate;

}

scaleWidth = sizeImage.width*scaleRate;

scaleHeight = sizeImage.height*scaleRate;


CGSize itemSizeSmall = CGSizeMake(scaleWidth, scaleHeight);

UIGraphicsBeginImageContext(itemSizeSmall);

CGRect imageRectSmall = CGRectMake(0,0, itemSizeSmall.width+2, itemSizeSmall.height+2);  //长和宽都增加2个像素,防止有些图片绘制旁边出现白线

[Image drawInRect:imageRectSmall];


UIImage *scaleImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return scaleImage;

}



//图片裁剪

//截取指定大小的图片

-(UIImage*)getSubImage:(CGRect)rect withImage:(UIImage*)image

{

    CGImageRef subImageRef = CGImageCreateWithImageInRect(image.CGImage, rect);

    CGRect smallBounds = CGRectMake(0,0, CGImageGetWidth(subImageRef), CGImageGetHeight(subImageRef)); 

    UIGraphicsBeginImageContext(smallBounds.size);

    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextDrawImage(context, smallBounds, subImageRef);

    UIImage* smallImage = [UIImage imageWithCGImage:subImageRef];

    UIGraphicsEndImageContext(); 

    return smallImage;



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值