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;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 遇到类似上传头像、社交分享等操作的时候,需要对图片进行裁切,一般需要限制一个最大值,来限制图片既要维持宽高比例,又...
    孟豊Mike阅读 4,951评论 0 4
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,683评论 1 92
  • 继续上一篇来分享一下我是如何一步步地从没有安全感到获得安全感的。这里的关键词是“自己”,整个过程需要你自己去完成,...
    Qkouki阅读 1,410评论 0 1
  • 谈传统道德文化中的感恩 作者:广东江门作家、画家张向东 传统道德文化是要与专制社会相...
    广东江门作家画家张向东阅读 2,600评论 2 3
  • 甚荒唐,到头来都是为他人作嫁衣裳——甄士隐《好了歌》 鲍鲍就要走了,我和她站在左侧的人行道上,我们刚从她住所的楼房...
    布鲁克林阅读 10,717评论 23 53