Skip to content

Instantly share code, notes, and snippets.

@chansuke
Last active November 29, 2016 07:54
Show Gist options
  • Save chansuke/ecaec31413ac060c1fe8 to your computer and use it in GitHub Desktop.
Save chansuke/ecaec31413ac060c1fe8 to your computer and use it in GitHub Desktop.
撮影部分を切り取る処理
func cropImage(image:UIImage) -> UIImage {
var srcImage:UIImage = image;
// 画像の回転禁止
UIGraphicsBeginImageContext(srcImage.size)
srcImage.drawInRect(CGRectMake(0, 0, srcImage.size.width, srcImage.size.height))
srcImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
//self.viewの縦横比を算出
let widthToHeightRatio:CGFloat = self.view.bounds.size.width/self.view.bounds.size.height
var cropRect:CGRect = CGRectMake(0, 0, 0, 0)
//self.viewの比率にimageサイズを合わせる
cropRect.size.width = srcImage.size.width
cropRect.size.height = srcImage.size.width / widthToHeightRatio
//y軸のずれを算出
cropRect.origin.x = 0
cropRect.origin.y = (srcImage.size.height - cropRect.size.height) / 2.0
//srcImage上のpreviewviewに当たる部分を算出
var point:CGPoint = CGPointZero
point.x = cameraView.frame.origin.x * srcImage.size.width / self.view.bounds.size.width;
point.y = (cameraView.frame.origin.y * cropRect.size.height / self.view.bounds.size.height) + cropRect.origin.y;
let srcWidth:CGFloat = cameraView.frame.size.width*srcImage.size.width/self.view.bounds.size.width
let srcHeight:CGFloat = cameraView.frame.size.height*srcImage.size.height/self.view.bounds.size.height
let trimArea = CGRectMake(point.x, point.y ,srcWidth, srcHeight)
let srcImageRef:CGImageRef = srcImage.CGImage!
let trimmedImageRef:CGImageRef = CGImageCreateWithImageInRect(srcImageRef, trimArea)!
let trimmmedImage:UIImage = UIImage(CGImage: trimmedImageRef)
return trimmmedImage;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment