“Creating an image format with an unknown type is an error” with UIImagePickerController

后端 未结 23 1826
长发绾君心
长发绾君心 2020-11-28 09:08

While choosing an image from the image picker in iOS 10 Swift 3 I am getting an error - Creating an image format with an unknown type is an error



        
相关标签:
23条回答
  • 2020-11-28 09:33
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
        if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {
            imgViewPhoto.image = image
        } else{
            print("Something went wrong")
        }
    
        picker.dismiss(animated: true, completion: nil)
    
    }
    
    0 讨论(0)
  • 2020-11-28 09:33

    // image picker with collection view class ViewController: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate,UICollectionViewDataSource,UICollectionViewDelegate {

    @IBOutlet var img: UIImageView!
    
    @IBOutlet weak var collview: UICollectionView!
    
    var image = NSMutableArray()
    
    
    let imgpkr = UIImagePickerController()
    
    override func viewDidLoad() {
        super.viewDidLoad()
    
        imgpkr.delegate = self
    }
    
    
    
    
    @IBAction func btnselect(_ sender: UIButton) {
    
    
        imgpkr.allowsEditing = true // false
        imgpkr.sourceType = .photoLibrary
        imgpkr.mediaTypes = UIImagePickerController.availableMediaTypes(for: .photoLibrary)!
        present(imgpkr, animated: true, completion: nil)
    
    }
    
    
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    
        let choose = info[UIImagePickerControllerOriginalImage]as!UIImage
        let edit = info[UIImagePickerControllerEditedImage]as!UIImage
    
        img.contentMode = .scaleAspectFit
        img.image = edit
    
        //MARK:- Add image in collview
    
        image.add(edit)
        collview.reloadData()
    
        dismiss(animated: true, completion: nil)
    
    }
    
    func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
    
        dismiss(animated: true, completion: nil)
    }
    
    //MARK:- Collection View
    
    
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    
        return image.count
    
    }
    
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    
        let cell = collview.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath)as! CollectionViewCell1
    
        cell.img1.image = image.object(at: indexPath.item)as! UIImage
    
        return cell
    
    
    
    }
    
    0 讨论(0)
  • 2020-11-28 09:34

    try below

        func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
        print("image selected");
        let selectedImage = info[UIImagePickerControllerOriginalImage] as! UIImag
        self.dismiss(animated: true, completion: nil)
       UIImg.image = selectedImage
    }
    
    0 讨论(0)
  • 2020-11-28 09:35

    For me I was getting the error:

    "fatal error: unexpectedly found nil..."

    when you select imagein imagepicker.

    To get around the problem, I created the outlet for the imageView again.

    0 讨论(0)
  • 2020-11-28 09:36

    What I did was that once I got the image from didFinishPickingMediaWithInfo, I called:

    func prepareImageForSaving(image:UIImage) {
        // create NSData from UIImage
        guard let imageData = UIImageJPEGRepresentation(image, 1) else {
            // handle failed conversion
            print("jpg error")
            return
        }
    
        self.saveImage(imageData: imageData as NSData)
    }
    
    func saveImage(imageData: NSData) {
        imageDatas = imageData
    }
    

    to save it in NSData format.

    The console still warned me on "[Generic] Creating an image format with an unknown type is an error" but at least my imageView gets updated to the selected image rather than showing the previous one from viewDidLoad.

    0 讨论(0)
  • 2020-11-28 09:37

    Remember to add delegate to self

    let picker = UIImagePickerController()
    picker.delegate = self // delegate added
    
    0 讨论(0)
提交回复
热议问题