31.UIImageView 图片等比例压缩显示

1.写一个UIimage的类别 如:

定义一个等比例压缩图片的方法
// 压缩图片
- (
UIImage  *)scaleToSize:( UIImage  *)img size:( CGSize )size{
   
  //  创建一个 bitmap context
   
  //  并把它设置成为当前正在使用的 context
   
  UIGraphicsBeginImageContext (size);
   
  //  绘制改变大小的图片
    [img
  drawInRect : CGRectMake ( 0 ,  0 , size. width , size. height )];
   
  //  从当前 context 中创建一个改变大小后的图片
   
  UIImage * scaledImage =  UIGraphicsGetImageFromCurrentImageContext ();
   
  //  使当前的 context 出堆栈
   
  UIGraphicsEndImageContext ();
   
  //  返回新的改变大小后的图片
   
   
  return  scaledImage;
}


2.压缩图片到100kb一下
类里边写两个类方法

#pragma mark -  压缩图片
+ ( UIImage  *)compressImageWithImage:( UIImage  *)chosenImage size:( CGSize )size
{
   
  UIImage  *imageTemp = [chosenImage  scaleToSize :chosenImage  size :size];
   
  NSData  *imgData =  UIImagePNGRepresentation (imageTemp);
   
  float  fcom =  0.00 ;
   
  //  判断 image data 是不是大于 100k
   
  if  (imgData. length ]] ]]>  IMAGE_COMPRESSION ) {
        fcom =
  IMAGE_COMPRESSION /imgData. length ;
        imgData =
  UIImageJPEGRepresentation (chosenImage, fcom);
        imageTemp = [
UIImage  imageWithData :imgData];
       
    }

   
  return  imageTemp;
}

3.求等比例的尺寸
// 求比例的方法
+ (
CGSize )equalProportionWithImageSize:( CGSize )imageSize imageViewSize:( CGSize )imageViewSize
{
   
  NSInteger  bek =  1 ;
   
  NSInteger  screenWidth = [[ UIScreen  mainScreen ]  currentMode ]. size . width ;
   
  if  (screenWidth >  320 ) {
        bek =
  2 ;
    }
   
  CGFloat  w1 = imageViewSize. width  * bek;
   
  CGFloat  h1 = imageViewSize. height  * bek;

   
  CGFloat  w2 = imageSize. width ;
   
  CGFloat  h2 = imageSize. height ;
   
 
   
  CGSize  mySize =  CGSizeZero ;
   
  if  (w1/h1 < w2/h2) {
        mySize.
width  = w1;
        mySize.
height  = mySize. width  * h2 / w2;
    }
   
  else
    {
        mySize.
height  = h1;
        mySize.
width  = mySize. height  * w2 / h2;
    }
   
  return  mySize;
}


4.调用方法
UIImageView  *imageView = [[ UIImageView  alloc ]  init ];
UIImage  *image = [ UIImage  imageWithContentsOfFile :pathTemp];
CGSize  mySize = [ TTPublicClassMethod  equalProportionWithImageSize :image. size  imageViewSize :cell. imageView . frame . size ];                           
imageView   . image   =  [ TTPublicClassMethod  compressImageWithImage :image  size :mySize];











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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值