使用image drawInRect: 方法改變圖片大小後,圖片畫質變差了--(頭像修改時)

// 如果在視網膜下修改圖片大小,會使畫質變差

+ (UIImage *) scaleFromImage: (UIImage *) image toSize: (CGSize) size

{

    UIGraphicsBeginImageContext(size);

    [image drawInRect:CGRectMake(0, 0, size.width, size.height)];

    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return newImage;

}



解決方法:

+ (UIImage *) scaleFromImage: (UIImage *) image toSize: (CGSize) size

{

    //Determine whether the screen is retina

    if([[UIScreen mainScreen] scale] == 2.0){      // @2x          

UIGraphicsBeginImageContextWithOptions(size, NO, 2.0);

    }else if([UIScreen mainScreenscale] == 3.0){ // @3x ( iPhone 6plus 、iPhone 6s plus)

UIGraphicsBeginImageContextWithOptions(size, NO, 3.0);

}else{

        UIGraphicsBeginImageContext(size);

    }

    // 繪製改變大小的圖片

    [image drawInRect:CGRectMake(0, 0, size.width, size.height)];

    // 從當前context中創建一個改變大小後的圖片

    UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();

    // 使當前的context出堆棧

    UIGraphicsEndImageContext();

    // 返回新的改變大小後的圖片

    return scaledImage;

}


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