您的位置:首页 > 移动开发 > IOS开发

ios 图片处理( 1.按比例缩放 2.指定宽度按比例缩放)

2016-11-12 10:13 453 查看
点击可查看我所写内容所对应的项目:https://github.com/liyuunxiangGit/CircleOfFriendsDisplay(一个朋友圈的实现)

首先我这里只拿按比例缩放进行讲解。大家可以先看下方的两个效果图:

               之前的效果图 图片变形

               修改后的 没有变形



代码在此:

//按比例缩放,size是你要把图显示到多大区域CGSizeMake(300,140)

-(UIImage*)imageCompressForSize:(UIImage*)sourceImagetargetSize:(CGSize)size{


  UIImage*newImage=nil;

  CGSizeimageSize=sourceImage.size;

  CGFloatwidth=imageSize.width;

  CGFloatheight=imageSize.height;

  CGFloattargetWidth=size.width;

  CGFloattargetHeight=size.height;

  CGFloatscaleFactor=0.0;

  CGFloatscaledWidth=targetWidth;

  CGFloatscaledHeight=targetHeight;

  CGPointthumbnailPoint=CGPointMake(0.0,0.0);


  if(CGSizeEqualToSize(imageSize,size)==NO){


    CGFloatwidthFactor=targetWidth/width;

    CGFloatheightFactor=targetHeight/height;


    if(widthFactor>heightFactor){

      scaleFactor=widthFactor;


    }

    else{


      scaleFactor=heightFactor;

    }

    scaledWidth=width*scaleFactor;

    scaledHeight=height*scaleFactor;


    if(widthFactor>heightFactor){


      thumbnailPoint.y=(targetHeight-scaledHeight)*0.5;

    }elseif(widthFactor<heightFactor){


      thumbnailPoint.x=(targetWidth-scaledWidth)*0.5;

    }

  }


  UIGraphicsBeginImageContext(size);


  CGRectthumbnailRect=CGRectZero;

  thumbnailRect.origin=thumbnailPoint;

  thumbnailRect.size.width=scaledWidth;

  thumbnailRect.size.height=scaledHeight;


  [sourceImagedrawInRect:thumbnailRect];


  newImage=UIGraphicsGetImageFromCurrentImageContext();

  if(newImage==nil){

    NSLog(@"scaleimagefail");

  }


  UIGraphicsEndImageContext();

  returnnewImage;

}



//指定宽度按比例缩放

-(UIImage*)imageCompressForWidth:(UIImage*)sourceImagetargetWidth:(CGFloat)defineWidth{


  UIImage*newImage=nil;

  CGSizeimageSize=sourceImage.size;

  CGFloatwidth=imageSize.width;

  CGFloatheight=imageSize.height;

  CGFloattargetWidth=defineWidth;

  CGFloattargetHeight=height/(width/targetWidth);

  CGSizesize=CGSizeMake(targetWidth,targetHeight);

  CGFloatscaleFactor=0.0;

  CGFloatscaledWidth=targetWidth;

  CGFloatscaledHeight=targetHeight;

  CGPointthumbnailPoint=CGPointMake(0.0,0.0);


  if(CGSizeEqualToSize(imageSize,size)==NO){


    CGFloatwidthFactor=targetWidth/width;

    CGFloatheightFactor=targetHeight/height;


    if(widthFactor>heightFactor){

      scaleFactor=widthFactor;

    }

    else{

      scaleFactor=heightFactor;

    }

    scaledWidth=width*scaleFactor;

    scaledHeight=height*scaleFactor;


    if(widthFactor>heightFactor){


      thumbnailPoint.y=(targetHeight-scaledHeight)*0.5;


    }elseif(widthFactor<heightFactor){


      thumbnailPoint.x=(targetWidth-scaledWidth)*0.5;

    }

  }


  UIGraphicsBeginImageContext(size);


  CGRectthumbnailRect=CGRectZero;

  thumbnailRect.origin=thumbnailPoint;

  thumbnailRect.size.width=scaledWidth;

  thumbnailRect.size.height=scaledHeight;


  [sourceImagedrawInRect:thumbnailRect];


  newImage=UIGraphicsGetImageFromCurrentImageContext();


  if(newImage==nil){


    NSLog(@"scaleimagefail");

  }

  UIGraphicsEndImageContext();

  returnnewImage;

}





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: