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

来源:互联网 发布:劈照片的软件 编辑:程序博客网 时间:2024/06/06 02:19
1.写一个UIimage的类别 如:

定义一个等比例压缩图片的方法
//压缩图片
- (
UIImage *)scaleToSize:(UIImage *)img size:(CGSize)size{
   
 // 创建一个bitmapcontext
   
 // 并把它设置成为当前正在使用的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;
   
 // 判断imagedata是不是大于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
原创粉丝点击