ios - UIImage 缩放比例

标签 ios swift uiimageview uiimage

我有这样一张图片:

Have a look at this image

并且我想将此图像调整为特定宽度:假设为 200 像素,其中还应计算高度。 (因此图像应保持其宽高比例)

这就是我到目前为止所得到的:

extension UIImage {
    func resize(newSize1: CGSize) -> UIImage {
        let size = self.size
        let widthRatio  = newSize1.width  / size.width
        let heightRatio = newSize1.height / size.height

        var newSize2: CGSize
        if(widthRatio > heightRatio) {
            newSize2 = CGSize(width: size.width * heightRatio, height: size.height * heightRatio)
        } else {
            newSize2 = CGSize(width: size.width * widthRatio,  height: size.height * widthRatio)
        }
        let rect = CGRect(x: 0, y: 0, width: newSize2.width, height: newSize2.height)
        UIGraphicsBeginImageContextWithOptions(newSize2, false, 1.0)
        self.draw(in: rect)
        let newImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return newImage2!
    }
}

但该函数采用 CGSize 大小参数(宽度和高度),但我只想获得一个采用宽度参数的函数。

如何编辑我的代码来解决我的问题?
非常感谢任何帮助:)

注意:UIImage 应该获得更小的分辨率(像素更少),而不是 Image View 本身!

最佳答案

对于 Swift 4 和 Swift 3,使用下面的 UIImage 扩展来调整图像大小。根据给定的宽度计算高度。

extension UIImage {
    func resized(toWidth width: CGFloat) -> UIImage? {
        let canvasSize = CGSize(width: width, height: CGFloat(ceil(width/size.width * size.height)))
        UIGraphicsBeginImageContextWithOptions(canvasSize, false, scale)
        defer { UIGraphicsEndImageContext() }
        draw(in: CGRect(origin: .zero, size: canvasSize))
        return UIGraphicsGetImageFromCurrentImageContext()
    }
}

关于ios - UIImage 缩放比例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49334843/

相关文章:

ios - 检查 UIImageView 中的图像不是占位符图像并附加到 UIImage 数组

ios - 在 Swift 中使用 C API

ios - 如何使用 ASWebAuthenticationSession 获取授权码?

iphone - imageView 的 iOS alpha 值比较失败

ios - 如何从HR(心率)得到HRV(心率变异性)

ios - 针对 iPhone 6/iPhone 6 plus 优化应用

ios - UITableView 一次仅勾选一行

ios - cocoa 中的随机弹跳方向?

swift - 如何继续使图像在 ScrollView 特定区域内滚动?

ios - 如何最小化 SpriteKit 中的四边形计数