テクノモンキーのアプリ開発日記

テクノモンキーの開発ブログです。iOS、Android、Unity、Cocos2d-xなどアプリ開発関連のTipsやアプリ開発に役立つ情報を発信します。

UIImageの縦横サイズを任意のサイズにリサイズする方法【iOSアプリ開発】

https://i-cdn.phonearena.com/images/article/100355-image/Bizarre-chapter-in-Apple-iPhone-history-ends-with-iOS-11.2-update.jpg


UIImageの縦横サイズを変更する方法についてのメモ。

今作っている日記アプリで、iPhoneのカメラロールから取得したUIImageの縦横サイズがかなり大きかったため複数枚画像を表示すると動きがもっさりしてしまいました。

なので、取得したUIImageをリサイズして縮小表示させたところもっさり感が改善しました。



UIImageの縦横サイズを変更する方法

UIImageの縦横サイズは以下の方法で変更できます。

//UIImage リサイズ
extension UIImage {
    func resize(size _size: CGSize) -> UIImage? {
        let widthRatio = _size.width / size.width
        let heightRatio = _size.height / size.height
        let ratio = widthRatio < heightRatio ? widthRatio : heightRatio
        
        let resizedSize = CGSize(width: size.width * ratio, height: size.height * ratio)
        
        UIGraphicsBeginImageContextWithOptions(resizedSize, false, 0.0) // 変更
        draw(in: CGRect(origin: .zero, size: resizedSize))
        let resizedImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        
        return resizedImage
    }
}

UIImageクラスを拡張して、リサイズするメソッドを追加してます。
使い方は以下のような感じです↓

// サイズを定義する
let Resize:CGSize = CGSize.init(width: 100, height:100)

//UIImageを指定のサイズにリサイズ
let imageResize = image.resize(size: Resize)