2016-06-18 8 views
2

Ich möchte benutzerdefinierte UIImage in Kamera Bildschirm hinzufügen, während Benutzer das Foto erfassen. Außerdem möchte ich das Bild im Vordergrund des aufgenommenen Bildes an der gleichen Position, an der das Bild hinzugefügt wurde.
Here the demo image that explain what i want.
Um dies umgehen iWie kann ein beliebiges benutzerdefiniertes Bild auf dem Kamera-Bildschirm hinzugefügt werden, während das Bild aufgenommen wird?

versuchen habe
let picker = UIImagePickerController() 
picker.sourceType = .Camera 
picker.view.addSubView(imageView) 

Aber mit diesem Code nur Bild hinzufügen, nicht Bild mit dem Aufnahme-Bild hinzufügen

Jede Hilfe zu schätzen ist.

Antwort

1

können Sie UIImagePickerController ‚s cameraOverlayView Eigenschaft die imageView oben auf dem Kamerabildschirm hinzufügen:

let picker = UIImagePickerController() 
picker.delegate = self 
picker.sourceType = .Camera 
picker.cameraOverlayView = imageView 

presentViewController(picker, animated: true, completion: nil) 

Für das Bild in den Vordergrund des aufgenommenen Foto addieren Sie eine Erweiterung für UIImage erstellen:

extension UIImage { 
    func imageWithOverlayImage(overlayImage: UIImage) -> UIImage { 
    let imageRect = CGRectMake(0, 0, self.size.width, self.size.height) 

    UIGraphicsBeginImageContext(self.size) 

    self.drawInRect(imageRect) 
    overlayImage.drawInRect(imageRect) 

    let resultImage = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 
    return resultImage 
    } 
} 

Dann können Sie es aus dem Delegatmethode des Bildes Picker nennen:

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 
    let image = info[UIImagePickerControllerOriginalImage] as! UIImage 
    finalImage = image.imageWithOverlayImage(overlayImage!) 
    dismissViewControllerAnimated(true, completion: nil) 
} 
+0

Ich habe das schon versucht, aber es hat nicht für mich funktioniert. Danke für die Hilfe. –

+0

@NiravDoctorwala Können Sie erklären, warum dies nicht für Sie funktioniert? –

+0

Ich habe bereits versucht, zwei Bilder zusammenzufassen, bevor diese Frage gepostet wurde, aber die ID funktionierte nicht richtig. Und ich versuche auch deinen Code, aber es auch nicht zwei Bilder richtig zusammenführen. –

0

versuchen, Overlayview setzen. Fügen Sie ein benutzerdefiniertes Bild zu Overlayview hinzu.

func openCamera(){ 

     let pickercontroller : UIImagePickerController = UIImagePickerController() 
     pickercontroller.delegate = self 

     if(UIImagePickerController .isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera)){ 

      pickercontroller.sourceType = UIImagePickerControllerSourceType.Camera 
     } 
     else{ 
     } 

     pickercontroller.editing = false 
     pickercontroller.showsCameraControls = false 
     let graphRect:CGRect = CGRectMake(0, 0,pickercontroller.view.frame.size.width-20 ,pickercontroller.view.frame.size.height) 

     let overlayView : UIView = UIView(frame: graphRect) 
     overlayView.backgroundColor = UIColor(colorLiteralRed: 0.0/255.0, green: 0/255.0, blue: 0.0/255.0, alpha: 0.5) 
     overlayView.layer.opaque = false 
     overlayView.opaque = false 

     var maskLayer : CAShapeLayer = CAShapeLayer() 
     overlayView.layer.mask = maskLayer 
     } 
+0

Ich versuche es bereits mit Overlay-Ansicht, dies wird nur Overlay-Ansicht auf dem Kamerabildschirm hinzufügen, was ich will ist, dass Kleid Bild mit Kamerabild zur Laufzeit zusammenführen, wenn Bild klicken. –