2016-12-18 2 views
1

Я работаю над этим заданием, где мы должны создать пользовательскую функцию камеры и сохранить изображения в галерее телефона. Так я вроде не сделал почти до камеры предварительного просмотра, но я еще не уверен, как захватывать и сохранять изображения с помощью скор 3.Хранить захваченное изображение в iOS с помощью swift 3

Вот исходный код:

var captureSession = AVCaptureSession() 
var sessionOutput = AVCapturePhotoOutput() 
var previewLayer = AVCaptureVideoPreviewLayer() 






override func viewDidLoad() { 
    super.viewDidLoad() 

    // Do any additional setup after loading the view. 
} 


override func viewWillAppear(_ animated: Bool) { 

    super.viewWillAppear(animated) 
    self.navigationController?.setNavigationBarHidden(true, animated: false) 

    let deviceSession = AVCaptureDeviceDiscoverySession(deviceTypes: [.builtInWideAngleCamera, .builtInDuoCamera,.builtInTelephotoCamera], mediaType: AVMediaTypeVideo, position: .unspecified) 

    for device in (deviceSession?.devices)! { 

     if device.position == AVCaptureDevicePosition.back { 

      do { 

       let input = try AVCaptureDeviceInput.init(device: device) 

       if captureSession.canAddInput(input) { 

        captureSession.addInput(input) 

        if captureSession.canAddOutput(sessionOutput) { 

         captureSession.addOutput(sessionOutput) 
         previewLayer = AVCaptureVideoPreviewLayer(session: captureSession) 
         previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill 
         previewLayer.connection.videoOrientation = .portrait 

         cameraLayerView.layer.addSublayer(previewLayer) 
         cameraLayerView.addSubview(topControllerView) 
         cameraLayerView.addSubview(bottomControllerView) 


         previewLayer.position = CGPoint(x: self.cameraLayerView.frame.width/2, y: self.cameraLayerView.frame.height/2) 
         previewLayer.bounds = cameraLayerView.frame 

         captureSession.startRunning() 

        } 
       } 
      } catch let avError { 
       print(avError) 
      } 
     } 
    } 


} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 



override func viewWillDisappear(_ animated: Bool) { 

    self.navigationController?.setNavigationBarHidden(false, animated: false) 
} 



@IBAction func galleryAction(_ sender: UIButton) { 

    // This part shows the thumbnail of a current image been taken 
} 



@IBAction func captureAction(_ sender: UIButton) { 

    // This is the part i have capture the image 

} 

ответ

2

Принимая картину это действительно просто, посмотрите here. Представить сборщика изображения:

func takePhoto(sender: UIButton) { 
    imagePicker = UIImagePickerController() 
    imagePicker.delegate = self 
    imagePicker.sourceType = .Camera 

    presentViewController(imagePicker, animated: true, completion: nil) 
} 

Получение принятых/выбранное изображение:

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) { 
    imagePicker.dismissViewControllerAnimated(true, completion: nil) 
    imageView.image = info[UIImagePickerControllerOriginalImage] as? UIImage 
} 

Теперь, сохраняя UIImage в фотоальбоме может быть сделано, как объяснено here. Следующий вызов будет сохранить фотографию в галерею и вызвать обработчик завершения:

UIImageWriteToSavedPhotosAlbum(yourImage, self, #selector(image(_:didFinishSavingWithError:contextInfo:)), nil) 

Обработчик что-то вроде:

func image(_ image: UIImage, didFinishSavingWithError error: NSError?, contextInfo: UnsafeRawPointer) { 
    if let error = error { 
     // error 
    } else { 
     // no error 
    } 
} 
+0

В основном упрощенно благодаря будет попробовать и обеспечить обратную связь @BogdanFarca –

+0

Помимо использования контроллера ImagePicker я хочу реализовать пользовательскую камеру, есть ли доступный ресурс, который вы можете предоставить @BogdanFarca –

+1

@SharkesMonken: есть очень хорошее объяснение того, как реализовать пользовательскую камеру здесь: https://github.com/ codepath/ios_guides/wiki/Create-a-Custom-Camera-View –

Смежные вопросы