iOS设置图片最大尺寸

经常遇到类似上传头像、社交分享等操作的时候,需要对图片进行裁切,
一般需要限制一个最大值,来限制图片既要维持宽高比例,又要让宽高都小于这个最大值

下面这个方法即可满足需求,当宽高都小于最大值的时候,不对图片进行压缩大小。当图片是竖排版(高>宽)的时候,把图片的高压缩到设置的最大值,同时宽按比例压缩到对应大小。同理,当图片是横版(高<宽),把宽设置成最大值,高按比例缩小。

压缩图片的原理,是利用Core Graphics来重绘图片

代码如下:

/*
 *
 *  压缩图片至目标尺寸
 *
 *  @param sourceImage 源图片
 *  @param maxValue 图片长宽最大值
 *
 *  @return 返回按照源图片的宽、高比例压缩至目标宽、高的UIImage图片
 */
- (UIImage *)resizeImage:(UIImage *)sourceImage toMaxWidthAndHeight:(CGFloat)maxValue {
    CGSize imageSize = sourceImage.size;

    CGFloat width = imageSize.width;
    CGFloat height = imageSize.height;

    if (width > height && width > maxValue) {
        height = height * (maxValue / width);
        width = maxValue;
    }else if (height > width && height > maxValue) {
        width = width * (maxValue / height);
        height = maxValue;
    }else {
        return sourceImage;
    }

    UIGraphicsBeginImageContext(CGSizeMake(width, height));
    [sourceImage drawInRect:CGRectMake(0, 0, width, height)];

    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return newImage;
}

希望能对大家有所帮助,欢迎互相交流,共同学习进步!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值