¿Cómo se toma una foto con la cámara o elegir una imagen de la biblioteca de fotos para poder mostrar en un imageView, por ejemplo?

Cualquier ayuda se agradece.

  • He publicado una respuesta para usted, pero usted está recibiendo todos los downvotes porque este no es el sitio para «código». usted tiene que proporcionar el código y le estamos ayudando a encontrar errores y mejorar su código. así que para la próxima vez, intenta soluciones de google y recibir ayuda si te quedas atascado. por ahora: he publicado un completo y funcional opción para usted. diviértete
  • Entiendo que este no es un lugar para la gente para hacer el trabajo para mí, simplemente estoy pidiendo algún tipo de indicación en cuanto a por dónde podía empezar. No espero a nadie a escribir para mí, aunque agradezco la respuesta que has publicado.
  • yo no quería ofender ni nada compañero. sólo quería decirte que, ¿por qué usted está recibiendo todos la votaron. tienes un upvote por mí, así que no la va a tener muy mala, y si mi trabajo te ayuda, estoy feliz de tener a su pregunta contestada de modo que usted puede comprobar. si necesita más ayuda, sólo házmelo saber.

1 Comentario

  1. 22

    Estoy usando el siguiente Swift 3

    //
    // DSCameraHandler.swift
    //
    // Created by David Seek on 23.04.17.
    // Copyright © 2016 David Seek. All rights reserved.
    //
    
    import MobileCoreServices
    import UIKit
    class DSCameraHandler: NSObject {
    private let imagePicker = UIImagePickerController()
    private let isPhotoLibraryAvailable = UIImagePickerController.isSourceTypeAvailable(.photoLibrary)
    private let isSavedPhotoAlbumAvailable = UIImagePickerController.isSourceTypeAvailable(.savedPhotosAlbum)
    private let isCameraAvailable = UIImagePickerController.isSourceTypeAvailable(.camera)
    private let isRearCameraAvailable = UIImagePickerController.isCameraDeviceAvailable(.rear)
    private let isFrontCameraAvailable = UIImagePickerController.isCameraDeviceAvailable(.front)
    private let sourceTypeCamera = UIImagePickerControllerSourceType.camera
    private let rearCamera = UIImagePickerControllerCameraDevice.rear
    private let frontCamera = UIImagePickerControllerCameraDevice.front
    var delegate: UINavigationControllerDelegate & UIImagePickerControllerDelegate
    init(delegate_: UINavigationControllerDelegate & UIImagePickerControllerDelegate) {
    delegate = delegate_
    }
    func getPhotoLibraryOn(_ onVC: UIViewController, canEdit: Bool) {
    if !isPhotoLibraryAvailable && !isSavedPhotoAlbumAvailable { return }
    let type = kUTTypeImage as String
    if isPhotoLibraryAvailable {
    imagePicker.sourceType = .photoLibrary
    if let availableTypes = UIImagePickerController.availableMediaTypes(for: .photoLibrary) {
    if availableTypes.contains(type) {
    imagePicker.mediaTypes = [type]
    imagePicker.allowsEditing = canEdit
    }
    }
    imagePicker.sourceType = .savedPhotosAlbum
    if let availableTypes = UIImagePickerController.availableMediaTypes(for: .savedPhotosAlbum) {
    if availableTypes.contains(type) {
    imagePicker.mediaTypes = [type]
    }
    }
    } else {
    return
    }
    imagePicker.allowsEditing = canEdit
    imagePicker.delegate = delegate
    onVC.present(imagePicker, animated: true, completion: nil)
    }
    func getCameraOn(_ onVC: UIViewController, canEdit: Bool) {
    if !isCameraAvailable { return }
    let type1 = kUTTypeImage as String
    if isCameraAvailable {
    if let availableTypes = UIImagePickerController.availableMediaTypes(for: .camera) {
    if availableTypes.contains(type1) {
    imagePicker.mediaTypes = [type1]
    imagePicker.sourceType = sourceTypeCamera
    }
    }
    if isRearCameraAvailable {
    imagePicker.cameraDevice = rearCamera
    } else if isFrontCameraAvailable {
    imagePicker.cameraDevice = frontCamera
    }
    } else {
    return
    }
    imagePicker.allowsEditing = canEdit
    imagePicker.showsCameraControls = true
    imagePicker.delegate = delegate
    onVC.present(imagePicker, animated: true, completion: nil)
    }
    }

    Llama dentro de su deseado ViewController por:

    extension ViewController: UINavigationControllerDelegate, UIImagePickerControllerDelegate {
    func thisIsTheFunctionWeAreCalling() {
    let camera = DSCameraHandler(delegate_: self)
    let optionMenu = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
    optionMenu.popoverPresentationController?.sourceView = self.view
    let takePhoto = UIAlertAction(title: "Take Photo", style: .default) { (alert : UIAlertAction!) in
    camera.getCameraOn(self, canEdit: true)
    }
    let sharePhoto = UIAlertAction(title: "Photo Library", style: .default) { (alert : UIAlertAction!) in
    camera.getPhotoLibraryOn(self, canEdit: true)
    }
    let cancelAction = UIAlertAction(title: "Cancel", style: .cancel) { (alert : UIAlertAction!) in
    }
    optionMenu.addAction(takePhoto)
    optionMenu.addAction(sharePhoto)
    optionMenu.addAction(cancelAction)
    self.present(optionMenu, animated: true, completion: nil)
    }
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    let image = info[UIImagePickerControllerEditedImage] as! UIImage
    //image is our desired image
    
    picker.dismiss(animated: true, completion: nil)
    }
    }
    • Bonita respuesta David thx por compartir
    • seguro compañero, eres bienvenido
    • El código funcionaba bien, excepto cuando la carga de la biblioteca con canEdit: falso a la hora de elegir una imagen que sólo se bloquea
    • No importa, he encontrado lo que estaba haciendo mal. vamos a imagen = info[UIImagePickerControllerEditedImage] como! UIImage es de cuando la imagen se puede editar y este cuando desea que el original vamos a imagen = info[UIImagePickerControllerOriginalImage]como! UIImage
    • Consulte también este método simple, y es compatible con Swift 3 : stackoverflow.com/questions/41717115/…
    • Muy útil la respuesta. Gracias por este. Pero hay un pequeño error, supongo. Se comprueba isPhotoLibraryAvailable dos veces en getPhotoLibraryOn. Segundo debe ser isSavedPhotoAlbumAvailable.
    • gracias mil!!!
    • Impresionante! funciona a la perfección. Gracias por que
    • eres muy bienvenido

Dejar respuesta

Please enter your comment!
Please enter your name here