 <p>You should try to use a <code>UIImagePickerController</code> like this</p> <pre><code>@IBAction func takePhoto(sender: UIButton) { let picker = UIImagePickerController() picker.delegate = self; picker.allowsEditing = true; picker.sourceType = .PhotoLibrary; self.presentViewController(picker animated:true completion:nil); } </code></pre> <p>Then you can get the image in <code>imagePickerController(_:didFinishPickingMediaWithInfo:)</code> method from <code>UIImagePickerControllerDelegate</code></p> <pre><code>func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { let chosenImage = info[UIImagePickerControllerEditedImage] as! UIImage UploadImage(chosenImage) picker.dismissViewControllerAnimated(true, completion: nil); } func imagePickerControllerDidCancel(picker: UIImagePickerController) { picker.dismissViewControllerAnimated(true, completion: nil); } </code></pre> <p>Finally you upload the image. Example using <code>HTTP POST</code> Check this <a href="http://stackoverflow.com/a/27902593/2710486">answer</a></p> <pre><code>function UploadImage(image : UIImage) { var imageData = UIImagePNGRepresentation(image) if imageData == nil { print("image not valid") return } // Upload .... } </code></pre> <p><strong>Note</strong> This answer is directly written in the reply, please change any invalid code.</p>