【Swift4】UIImage(画像)を角度を指定して回転させる方法【Xcode9】

2020年8月27日

画像(UIImage)を角度を指定して回転させる方法です。
回転した画像はUIImage型で取り出せませます。

func rotatedImage(_ image: UIImage, angle: CGFloat) -> UIImage {
    
    let imgSize = CGSize.init(width: image.size.width, height: image.size.height)

    UIGraphicsBeginImageContextWithOptions(imgSize, false, 0.0)
    let context: CGContext = UIGraphicsGetCurrentContext()!

    context.translateBy(x: image.size.width/2, y: image.size.height/2)
    context.scaleBy(x: 1.0, y: -1.0)
    
    let radian: CGFloat = angle * CGFloat.pi / 180.0
    context.rotate(by: radian)
    
    context.draw(image.cgImage!, in: CGRect.init(x: -image.size.width/2, y: -image.size.height/2, width: image.size.width, height: image.size.height))
    
    let rotatedImage: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
    
    UIGraphicsEndImageContext()
    
    return rotatedImage
}

取り出せる画像は元画像のサイズの1/2で生成さるような作りになっています。
サイズオーバーした部分は見切れるようになっています。