UIImageをリサイズする
IOSアプリで画像を表示する時、画像サイズに依存せずにViewいっぱいに表示したい。
その際、縦長の画像が縦に押しつぶされた状態になるなど、画像が変にリサイズされて歪んでしまうのは避けたいというコード。
一旦リサイズしさらにトリミングするという処理をしているため、無駄が多いように思える。
もっといい方法がありそうだけ、swift初心者なので思いつかなかった。。。
func fixImageSize(image: UIImage, width: CGFloat, height: CGFloat) -> UIImage{ let widthRatio = width / image.size.width let heightRatio = height / image.size.height let (resizeWidth, resizeHeight) = heightRatio > widthRatio ? (image.size.width * heightRatio, height):(width, image.size.height * widthRatio) let (x, y) = ((resizeWidth - width) / 2, (resizeHeight - height) / 2) let size: CGSize = CGSize(width: resizeWidth, height: resizeHeight) UIGraphicsBeginImageContext(size) image.drawInRect(CGRectMake(0, 0, resizeWidth, resizeHeight)) let resizeImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() let trimRect = CGRectMake(x, y, width, height) let trimRef = CGImageCreateWithImageInRect(resizeImage.CGImage, trimRect) let trimImage = UIImage(CGImage: trimRef!) return trimImage }