【问题标题】:Resize UIImage without squashing在不挤压的情况下调整 UIImage 的大小
【发布时间】:2014-12-07 14:24:00
【问题描述】:

我想调整 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()

【问题讨论】:

    标签: ios swift parse-platform resize uiimage


    【解决方案1】:

    尝试使用此方法缩放图像,同时保持纵横比:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-11
      • 2021-12-17
      • 2023-02-05
      相关资源
      最近更新 更多