现在的位置: 首页 > 综合 > 正文

图片的压缩与裁剪

2017年12月09日 ⁄ 综合 ⁄ 共 2570字 ⁄ 字号 评论关闭

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

+(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;

抱歉!评论已关闭.