Skip to main content
 首页 » 操作系统

ios之在不压缩的情况下调整 UIImage 的大小

2024年01月01日51lexus

我想调整 UIImage 的大小以便能够将其上传到 parse.com。我想调整它的大小而不压扁它。我如何确保它足够小以上传到 parse.com(10485760 字节)但不将其压缩到设定的大小。 这是我在下面尝试的代码,但显然准确设置了图像大小。 有什么想法吗?

    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() 

请您参考如下方法:

尝试使用此方法在保持宽高比的同时缩放图像:

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))