上海快风信息科技有限公司程序员iOS

iOS 图片按比例缩放

2018-01-30  本文已影响60人  SunnyLeong

1.按比例缩放。

//按比例缩放,size是你要把图显示到 多大区域 ,例如:CGSizeMake(300, 400)
-(UIImage *) imageCompressForSize:(UIImage *)sourceImage targetSize:(CGSize)size{
   UIImage *newImage = nil;
   CGSize imageSize = sourceImage.size;
   CGFloat width = imageSize.width;
   CGFloat height = imageSize.height;
   CGFloat targetWidth = size.width;
   CGFloat targetHeight = size.height;
   CGFloat scaleFactor = 0.0;
   CGFloat scaledWidth = targetWidth;
   CGFloat scaledHeight = targetHeight;
   CGPoint thumbnailPoint = CGPointMake(0.0, 0.0);
    
   if(CGSizeEqualToSize(imageSize, size) == NO){
       CGFloat widthFactor = targetWidth / width;
       CGFloat heightFactor = 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);
    CGRect thumbnailRect = CGRectZero;
    thumbnailRect.origin = thumbnailPoint;
    thumbnailRect.size.width = scaledWidth;
    thumbnailRect.size.height = scaledHeight;
    [sourceImagedrawInRect:thumbnailRect];
    newImage = UIGraphicsGetImageFromCurrentImageContext();

   if(newImage == nil){
        NSLog(@"scale image fail");
    }
    UIGraphicsEndImageContext();
   return newImage;
}

2.指定宽度按比例缩放。

//指定宽度按比例缩放
-(UIImage *)imageCompressForWidth:(UIImage *)sourceImage targetWidth:(CGFloat)defineWidth{
   UIImage *newImage = nil;
   CGSize imageSize = sourceImage.size;
   CGFloat width = imageSize.width;
   CGFloat height = imageSize.height;
   CGFloat targetWidth = defineWidth;
   CGFloat targetHeight = height / (width / targetWidth);
   CGSize size = CGSizeMake(targetWidth, targetHeight);
   CGFloat scaleFactor = 0.0;
   CGFloat scaledWidth = targetWidth;
   CGFloat scaledHeight = targetHeight;
   CGPoint thumbnailPoint = CGPointMake(0.0, 0.0);
    
   if(CGSizeEqualToSize(imageSize, size) ==NO){
       CGFloat widthFactor = targetWidth / width;
       CGFloat heightFactor = 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;
        }else if(widthFactor < heightFactor){
            thumbnailPoint.x = (targetWidth - scaledWidth) *0.5;
        }
    }
    UIGraphicsBeginImageContext(size);
    CGRect thumbnailRect = CGRectZero;
    thumbnailRect.origin = thumbnailPoint;
    thumbnailRect.size.width = scaledWidth;
    thumbnailRect.size.height = scaledHeight;
    [sourceImagedrawInRect:thumbnailRect];
    newImage = UIGraphicsGetImageFromCurrentImageContext();
    
   if(newImage == nil){
        NSLog(@"scale image fail");
    }
    UIGraphicsEndImageContext();
   return newImage;
}
上一篇下一篇

猜你喜欢

热点阅读