Last active
April 12, 2018 03:31
-
-
Save uruly/d99e3ab484d19d5841e90da6175d57e9 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extension UIImage { | |
func resize(size:CGSize) -> UIImage?{ | |
// リサイズ処理 | |
let origWidth = self.size.width | |
let origHeight = self.size.height | |
var resizeWidth:CGFloat = 0 | |
var resizeHeight:CGFloat = 0 | |
if (origWidth < origHeight) { | |
resizeWidth = size.width | |
resizeHeight = origHeight * resizeWidth / origWidth | |
} else { | |
resizeHeight = size.height | |
resizeWidth = origWidth * resizeHeight / origHeight | |
} | |
let resizeSize = CGSize(width:resizeWidth, height:resizeHeight) | |
UIGraphicsBeginImageContext(resizeSize) | |
self.draw(in: CGRect(x:0,y: 0,width: resizeWidth, height: resizeHeight)) | |
let resizeImage = UIGraphicsGetImageFromCurrentImageContext() | |
UIGraphicsEndImageContext() | |
// 切り抜き処理 | |
let cropRect = CGRect(x:( resizeWidth - size.width ) / 2, | |
y:( resizeHeight - size.height) / 2, | |
width:size.width, | |
height:size.height) | |
if let cropRef = resizeImage?.cgImage { | |
cropRef.cropping(to: cropRect) | |
let cropImage = UIImage(cgImage: cropRef) | |
return cropImage | |
}else { | |
print("error!") | |
return nil | |
} | |
} | |
//向きがおかしくなる時用 | |
func resizeMaintainDirection(size:CGSize) -> UIImage?{ | |
//縦横がおかしくなる時は一度書き直すと良いらしい | |
UIGraphicsBeginImageContextWithOptions(self.size, false, 0.0) | |
self.draw(in:CGRect(x:0,y:0,width:self.size.width,height:self.size.height)) | |
guard let image = UIGraphicsGetImageFromCurrentImageContext() else { return nil } | |
UIGraphicsEndImageContext() | |
// リサイズ処理 | |
let origWidth = image.size.width | |
let origHeight = image.size.height | |
var resizeWidth:CGFloat = 0 | |
var resizeHeight:CGFloat = 0 | |
if (origWidth < origHeight) { | |
resizeWidth = size.width | |
resizeHeight = origHeight * resizeWidth / origWidth | |
} else { | |
resizeHeight = size.height | |
resizeWidth = origWidth * resizeHeight / origHeight | |
} | |
let resizeSize = CGSize(width:resizeWidth, height:resizeHeight) | |
UIGraphicsBeginImageContext(resizeSize) | |
image.draw(in: CGRect(x:0,y: 0,width: resizeWidth, height: resizeHeight)) | |
let resizeImage = UIGraphicsGetImageFromCurrentImageContext() | |
UIGraphicsEndImageContext() | |
// 切り抜き処理 | |
let cropRect = CGRect(x:( resizeWidth - size.width ) / 2, | |
y:( resizeHeight - size.height) / 2, | |
width:size.width, | |
height:size.height) | |
if let cropRef = resizeImage?.cgImage { | |
cropRef.cropping(to: cropRect) | |
let cropImage = UIImage(cgImage: cropRef) | |
return cropImage | |
}else { | |
print("error!") | |
return nil | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment