2014-12-07 5 views
1

Я хотел бы изменить размер UIImage, чтобы загрузить его на parse.com. Я бы хотел изменить его, не раздавив его. Как я могу убедиться, что он достаточно мал, чтобы загрузить на parse.com (10485760 байт), но не сквозит его до заданного размера. Это код, который я пробовал ниже, но, очевидно, точно устанавливает размер изображения. Любые идеи?Resize UIImage без раздавливания

var newSize:CGSize = CGSize(width: 600,height: 600) 
    let rect = CGRectMake(0,0, newSize.width, newSize.height) 
    UIGraphicsBeginImageContextWithOptions(newSize, false, 0.0) 

    // image is a variable of type UIImage 
    profileImage?.drawInRect(rect) 

    profileImage = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

ответ

3

Попробуйте использовать этот метод, чтобы масштабировать изображение, сохраняя пропорции:

func scaleImage(image: UIImage, maxDimension: CGFloat) -> UIImage { 

    var scaledSize = CGSize(width: maxDimension, height: maxDimension) 
    var scaleFactor: CGFloat 

    if image.size.width > image.size.height { 
     scaleFactor = image.size.height/image.size.width 
     scaledSize.width = maxDimension 
     scaledSize.height = scaledSize.width * scaleFactor 
    } else { 
     scaleFactor = image.size.width/image.size.height 
     scaledSize.height = maxDimension 
     scaledSize.width = scaledSize.height * scaleFactor 
    } 

    UIGraphicsBeginImageContext(scaledSize) 
    image.drawInRect(CGRectMake(0, 0, scaledSize.width, scaledSize.height)) 
    let scaledImage = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

    return scaledImage 
} 

В этом случае, вы могли бы назвать его следующим образом:

profileImage = scaleImage(profileImage, newSize: CGSizeMake(600, 600)) 
Смежные вопросы