iOS 图片处理-按比例缩放 (1.按比例缩放 2.指定宽度按比例缩放)

本文详细介绍了两种在iOS开发中处理图片缩放的方法:一是按比例缩放,二是指定宽度按比例缩放。通过计算比例,确保图片在缩放过程中保持合适的尺寸,避免失真。同时提供了具体的代码实现,帮助开发者更好地理解和应用这些技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值