Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import UIKit
- import Firebase
- import AVFoundation
- class CameraViewController: UIViewController,UIImagePickerControllerDelegate, UINavigationControllerDelegate {
- var captureSession : AVCaptureSession?
- var stillImageOutput : AVCaptureStillImageOutput?
- var previewLayer : AVCaptureVideoPreviewLayer?
- @IBOutlet var cameraView: UIView!
- override func viewDidLoad() {
- super.viewDidLoad()
- // Do any additional setup after loading the view.
- }
- override func didReceiveMemoryWarning() {
- super.didReceiveMemoryWarning()
- // Dispose of any resources that can be recreated.
- }
- override func viewDidAppear(animated: Bool) {
- super.viewDidAppear(animated)
- previewLayer?.frame = cameraView.bounds
- }
- override func viewWillAppear(animated: Bool) {
- super.viewWillAppear(animated)
- captureSession = AVCaptureSession()
- captureSession?.sessionPreset = AVCaptureSessionPresetPhoto //AVCaptureSessionPreset1920x1080
- let backCamera = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)
- var error : NSError?
- var input: AVCaptureDeviceInput!
- do {
- input = try AVCaptureDeviceInput(device: backCamera)
- } catch let error1 as NSError {
- error = error1
- input = nil
- }
- if (error == nil && captureSession?.canAddInput(input) != nil){
- captureSession?.addInput(input)
- stillImageOutput = AVCaptureStillImageOutput()
- stillImageOutput?.outputSettings = [AVVideoCodecKey : AVVideoCodecJPEG]
- if (captureSession?.canAddOutput(stillImageOutput) != nil){
- captureSession?.addOutput(stillImageOutput)
- previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
- previewLayer?.videoGravity = AVLayerVideoGravityResizeAspect
- previewLayer?.connection.videoOrientation = AVCaptureVideoOrientation.Portrait
- cameraView.layer.addSublayer(previewLayer!)
- captureSession?.startRunning()
- }
- }
- }
- @IBOutlet var tempImageView: UIImageView!
- func didPressTakePhoto(){
- if let videoConnection = stillImageOutput?.connectionWithMediaType(AVMediaTypeVideo){
- videoConnection.videoOrientation = AVCaptureVideoOrientation.Portrait
- stillImageOutput?.captureStillImageAsynchronouslyFromConnection(videoConnection, completionHandler: {
- (sampleBuffer, error) in
- if sampleBuffer != nil {
- var imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(sampleBuffer)
- var dataProvider = CGDataProviderCreateWithCFData(imageData)
- var cgImageRef = CGImageCreateWithJPEGDataProvider(dataProvider, nil, true, CGColorRenderingIntent.RenderingIntentDefault)
- var image = UIImage(CGImage: cgImageRef!, scale: 1.0, orientation: UIImageOrientation.Right)
- self.tempImageView.image = image
- self.tempImageView.hidden = false
- }
- })
- }
- }
- var didTakePhoto = Bool()
- func didPressTakeAnother(){
- if didTakePhoto == true{
- tempImageView.hidden = true
- didTakePhoto = false
- }
- else{
- captureSession?.startRunning()
- didTakePhoto = true
- didPressTakePhoto()
- }
- }
- override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
- didPressTakeAnother()
- }
- }
Add Comment
Please, Sign In to add comment