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;
}

希望能對大家有所幫助,歡迎互相交流,共同學習進步!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章