iOS端末で、よく写真ををリサイズして、アップロードしたいことがある。
ただ、ちょっと注意しないと、Retina対応で画像が設定されたサイズで生成されないことがある。
これはUIGraphicsBeginImageContextWithOptions()メソットでscaleパラメーターで、期待されるサイズにならない場合があるほで、気をつけないといけない。
ここでは、scale 1.0を設定した実装で、実際リサイズしたいサイズでファイルが生成されるが確認される。
UIImage+extension.swift
func resizeWithStorage(toWidth: CGFloat) -> UIImage {
let scale = toWidth / self.size.width
let toHeight = self.size.height * scale
let newSize = CGSize(width: toWidth, height: toHeight)
let rect = CGRect(origin: CGPoint(x: 0, y: 0), size: newSize)
UIGraphicsBeginImageContextWithOptions(newSize, false, 1.0) // <-- ここ
self.draw(in: rect)
let image: UIImage! = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
iOS、Androidアプリの制作なら、https://origon.co.jp にお任せください
信頼且つ満足できる製品を納品いたします