//图片根据不同的大小进行压缩
+(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;
}