user2828182
user2828182

Reputation: 67

Cropping a captured still image

I want just a specific part of my captured image to be cropped in a circular shape right before it's viewed.

Here is the code for capturing still images:

@IBAction func takePhoto(sender: UIButton) {

    self.stillImageOutput!.captureStillImageAsynchronouslyFromConnection(self.stillImageOutput!.connectionWithMediaType(AVMediaTypeVideo)) { (buffer:CMSampleBuffer!, error:NSError!) -> Void in
        var image = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(buffer)
        var data_image = UIImage(data: image)
        self.previewImage.image = data_image

    }

}

Thank you

Upvotes: 1

Views: 837

Answers (1)

Leo Dabus
Leo Dabus

Reputation: 236285

if let imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(buffer) {
    if let image = UIImage(data: imageData) {
        let square = image.size.width < image.size.height ? CGSize(width: image.size.width, height: image.size.width) : CGSize(width: image.size.height, height: image.size.height)
        let imageView = UIImageView(frame: CGRect(origin: CGPoint(x: 0, y: 0), size: square))
        imageView.contentMode = UIViewContentMode.ScaleAspectFill
        imageView.image = image
        imageView.layer.cornerRadius = square.width/2
        imageView.layer.masksToBounds = true
        UIGraphicsBeginImageContext(imageView.bounds.size)
        imageView.layer.renderInContext(UIGraphicsGetCurrentContext())
        let result = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        self.previewImage.image = result
    }
}

Upvotes: 1

Related Questions