iOS 圖片處理-按比例縮放 (1.按比例縮放 2.指定寬度按比例縮放)

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.00.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.00.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;

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章