【Swift4】UIImageをアスペクト比をそのままにリサイズする方法

2020年8月29日

UIImageを指定した横幅を元に、画像のアスペクト比をそのままにリサイズする方法です。
リサイズする手順は以下のような手順になります。

1.リサイズ用の大きさを作成
2.リサイズ用の大きさのContextを作成
3.Contextに、リサイズ用サイズで画像を描画
4.コンテキストからUIImageに変換

UIImageをアスペクト比をそのままにリサイズする方法

func resize(image: UIImage, width: Double) -> UIImage {
        
    // オリジナル画像のサイズからアスペクト比を計算
    let aspectScale = image.size.height / image.size.width
    
    // widthからアスペクト比を元にリサイズ後のサイズを取得
    let resizedSize = CGSize(width: width, height: width * Double(aspectScale))
    
    // リサイズ後のUIImageを生成して返却
    UIGraphicsBeginImageContext(resizedSize)
    image.draw(in: CGRect(x: 0, y: 0, width: resizedSize.width, height: resizedSize.height))
    let resizedImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    
    return resizedImage!
}