ios中图像进行压缩方法汇总

2020-01-12 13:49:54丽君
在Iphone上有两种读取图片数据的简单方法: UIImageJPEGRepresentation和UIImagePNGRepresentation. UIImageJPEGRepresentation函数需要两个参数:图片的引用和压缩系数.而UIImagePNGRepresentation只需要图片引用作为参数.  

方法一:

 

复制代码
- (UIImage*)scaleFromImage:(UIImage*)image scaledToSize:(CGSize)newSize
{
 CGSize imageSize = image.size;
 CGFloat width = imageSize.width;
 CGFloat height = imageSize.height;
      
 if (width <= newSize.width && height <= newSize.height){
  return image;
 }
      
 if (width == 0 || height == 0){
  return image;
 }
      
 CGFloat widthFactor = newSize.width / width;
 CGFloat heightFactor = newSize.height / height;
 CGFloat scaleFactor = (widthFactor<heightFactor?widthFactor:heightFactor);
      
 CGFloat scaledWidth = width * scaleFactor;
 CGFloat scaledHeight = height * scaleFactor;
 CGSize targetSize = CGSizeMake(scaledWidth,scaledHeight);
      
    UIGraphicsBeginImageContext(targetSize);
    [image drawInRect:CGRectMake(0,0,scaledWidth,scaledHeight)];
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;
}

 

方法二:

.h具体code

复制代码
#import <Foundation/Foundation.h>  
@interface UIImage (UIImageExt)  
- (UIImage *)scaleToSize:(UIImage *)img size:(CGSize)size;  
- (UIImage *)imageByScalingAndCroppingForSize:(CGSize)targetSize;  
@end  

 

.m具体code

 

复制代码
#import "UIImageExt.h"  
@implementation UIImage (UIImageExt)  
- (UIImage *)scaleToSize:(UIImage *)img size:(CGSize)size{  
    // 创建一个bitmap的context  
    // 并把它设置成为当前正在使用的context  
    UIGraphicsBeginImageContext(size);  
    // 绘制改变大小的图片