ios中图像进行压缩方法汇总
方法一:
-(UIImage*)scaleFromImage:(UIImage*)imagescaledToSize:(CGSize)newSize
{
 CGSizeimageSize=image.size;
 CGFloatwidth=imageSize.width;
 CGFloatheight=imageSize.height;
     
 if(width<=newSize.width&&height<=newSize.height){
 returnimage;
 }
     
 if(width==0||height==0){
 returnimage;
 }
     
 CGFloatwidthFactor=newSize.width/width;
 CGFloatheightFactor=newSize.height/height;
 CGFloatscaleFactor=(widthFactor<heightFactor?widthFactor:heightFactor);
     
 CGFloatscaledWidth=width*scaleFactor;
 CGFloatscaledHeight=height*scaleFactor;
 CGSizetargetSize=CGSizeMake(scaledWidth,scaledHeight);
     
   UIGraphicsBeginImageContext(targetSize);
   [imagedrawInRect:CGRectMake(0,0,scaledWidth,scaledHeight)];
   UIImage*newImage=UIGraphicsGetImageFromCurrentImageContext();
   UIGraphicsEndImageContext();
   returnnewImage;
}
方法二:
.h具体code
#import<Foundation/Foundation.h> @interfaceUIImage(UIImageExt) -(UIImage*)scaleToSize:(UIImage*)imgsize:(CGSize)size; -(UIImage*)imageByScalingAndCroppingForSize:(CGSize)targetSize; @end
.m具体code
#import"UIImageExt.h" 
@implementationUIImage(UIImageExt) 
-(UIImage*)scaleToSize:(UIImage*)imgsize:(CGSize)size{ 
   //创建一个bitmap的context 
   //并把它设置成为当前正在使用的context 
   UIGraphicsBeginImageContext(size); 
   //绘制改变大小的图片 
   [imgdrawInRect:CGRectMake(0,0,size.width,size.height)]; 
   //从当前context中创建一个改变大小后的图片 
   UIImage*scaledImage=UIGraphicsGetImageFromCurrentImageContext(); 
   //使当前的context出堆栈 
   UIGraphicsEndImageContext(); 
   //返回新的改变大小后的图片 
   returnscaledImage; 
} 
-(UIImage*)imageByScalingAndCroppingForSize:(CGSize)targetSize 
{ 
   UIImage*sourceImage=self; 
   UIImage*newImage=nil; 
   CGSizeimageSize=sourceImage.size; 
   CGFloatwidth=imageSize.width; 
   CGFloatheight=imageSize.height; 
   CGFloattargetWidth=targetSize.width; 
   CGFloattargetHeight=targetSize.height; 
   CGFloatscaleFactor=0.0; 
   CGFloatscaledWidth=targetWidth; 
   CGFloatscaledHeight=targetHeight; 
   CGPointthumbnailPoint=CGPointMake(0.0,0.0); 
   if(CGSizeEqualToSize(imageSize,targetSize)==NO) 
   { 
       CGFloatwidthFactor=targetWidth/width; 
       CGFloatheightFactor=targetHeight/height; 
       if(widthFactor>heightFactor) 
           scaleFactor=widthFactor;//scaletofitheight 
       else 
           scaleFactor=heightFactor;//scaletofitwidth 
       scaledWidth =width*scaleFactor; 
       scaledHeight=height*scaleFactor; 
       //centertheimage 
       if(widthFactor>heightFactor) 
       { 
           thumbnailPoint.y=(targetHeight-scaledHeight)*0.5; 
       } 
       else 
           if(widthFactor<heightFactor) 
           { 
               thumbnailPoint.x=(targetWidth-scaledWidth)*0.5; 
           } 
   } 
   UIGraphicsBeginImageContext(targetSize);//thiswillcrop 
   CGRectthumbnailRect=CGRectZero; 
   thumbnailRect.origin=thumbnailPoint; 
   thumbnailRect.size.width =scaledWidth; 
   thumbnailRect.size.height=scaledHeight; 
   [sourceImagedrawInRect:thumbnailRect]; 
   newImage=UIGraphicsGetImageFromCurrentImageContext(); 
   if(newImage==nil) 
       NSLog(@"couldnotscaleimage"); 
   //popthecontexttogetbacktothedefault 
   UIGraphicsEndImageContext(); 
   returnnewImage; 
} 
@end 
方法三:(本人项目中使用的方法)
-(UIImage*)imageCompressForWidth:(UIImage*)sourceImagetargetWidth:(CGFloat)defineWidth
{
   CGSizeimageSize=sourceImage.size;
   CGFloatwidth=imageSize.width;
   CGFloatheight=imageSize.height;
   CGFloattargetWidth=defineWidth;
   CGFloattargetHeight=(targetWidth/width)*height;
   UIGraphicsBeginImageContext(CGSizeMake(targetWidth,targetHeight));
   [sourceImagedrawInRect:CGRectMake(0,0,targetWidth, targetHeight)];
   UIImage*newImage=UIGraphicsGetImageFromCurrentImageContext();
   UIGraphicsEndImageContext();
   returnnewImage;
}
以上所述就是本文的全部内容了,希望大家能够喜欢。