ios - UIImagePickerController এর সাথে "একটি অজানা প্রকারের সাথে একটি চিত্র বিন্যাস তৈরি করা একটি ত্রুটি"




swift xcode (16)

আইওএস 10 সুইফট 3 এ চিত্র চয়নকারী থেকে কোনও চিত্র চয়ন করার সময় আমি একটি ত্রুটি পাচ্ছি - Creating an image format with an unknown type is an error

 func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) {

    imagePost.image = image
    self.dismiss(animated: true, completion: nil)
}

চিত্রটি নির্বাচিত এবং আপডেট হচ্ছে না। এই পদ্ধতিটি সম্পর্কিত সিনট্যাক্স বা আইওএস 10 বা সুইফট 3-এ পরিবর্তিত হয়েছে বা এটি করার অন্য কোনও উপায় আছে কিনা তা জানতে আমার সহায়তা বা পরামর্শ প্রয়োজন।

https://code.i-harness.com


আপনি যদি চিত্রের চিত্র সম্পাদনা মঞ্জুরি দেয় imageController.allowsEditing = true তবে আপনাকে প্রথমে সম্পাদিত চিত্রটি পেতে হবে:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
    picker.dismissViewControllerAnimated(true, completion: nil)

    if let image = info[UIImagePickerControllerEditedImage] as? UIImage {
        imagePost.image = image
    } else if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {
        imagePost.image = image
    } else {
        imagePost.image = nil
    }
}

আবদুরোহমানের উত্তর অনুসারে, আমি আমার কোড পরিবর্তন করেছি এবং সমস্যার সমাধান করছি, ধন্যবাদ।

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    let selectedImage = info[UIImagePickerControllerOriginalImage] as! UIImage

    photoImageView.image = selectedImage

    // Dismiss the picker.
    dismiss(animated: true, completion: nil)
}

আমি ফটো লাইব্রেরিতে ডিফল্ট চিত্রগুলি পেয়েছি যাতে এই সমস্যাটি কমে যায়। আপনি যদি নিজের কম্পিউটার থেকে কোনও চিত্র সিমুলেটারে টানেন এবং এটিকে চয়ন করেন। এই সমস্যা সমাধান করা হয়


আমি মনে করি আপনি ফটো ইমেজভিউ এবং চিত্রের মধ্যে একটি সংযোগ মিস করছেন।

আমার স্ক্রিনশটগুলি নীচে একবার দেখুন:


আমি যা করলাম তা হ'ল একবার আমি ফিনিশপিকিংমিডিয়া উইথআইনফো থেকে চিত্রটি পেয়েছি, আমি ফোন করেছি:

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
}

এটি এনএসডিটা ফর্ম্যাটে সংরক্ষণ করতে।

কনসোলটি তবুও আমাকে সতর্ক করেছিল "[জেনেরিক] অজানা প্রকারের সাথে একটি চিত্র ফর্ম্যাট তৈরি করা একটি ত্রুটি" তবে কমপক্ষে আমার চিত্রভিউ ভিডিডলয়েড থেকে পূর্ববর্তীটি না দেখিয়ে নির্বাচিত চিত্রটিতে আপডেট হয়।


উল্লিখিত কোডটি আমার জন্য সমস্যার সমাধান করেছে -

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
    if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {
        imagePost.image = image
    } else{
        print("Something went wrong")
    }

    self.dismiss(animated: true, completion: nil)
}

এটি আমার পক্ষে কাজ করেছে:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {
        imageView.image = image
        self.dismiss(animated: true, completion: nil)
    }
}

এটি আমার পক্ষে কাজ করেছে। ঠিক এটি অনুলিপি করুন এবং আটকান।

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    // The info dictionary contains multiple representations of the image, and this uses the original.
        let selectedImage = info[UIImagePickerControllerOriginalImage] as! UIImage

    // Set photoImageView to display the selected image.
     photoImageView.image = selectedImage

    // Dismiss the picker.
    dismiss(animated: true, completion: nil)
}

এটিকে ভিডডোডে যুক্ত করুন ()

imagepicker.delegate = self

কোডের নীচে সমস্যার সমাধান করেছে:

যদি ব্যবহারকারী নির্বাচিত চিত্রটিতে পরিবর্তন সম্পাদন করেন তবে কেবলমাত্র সেই চিত্রটি টানুন অন্যথায় কোনও পরিবর্তন ছাড়াই মূল চিত্র উত্সটি টানুন এবং অবশেষে চিত্র চয়নকারী দৃশ্যের নিয়ামককে বরখাস্ত করুন।

public func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]){
    if let image = info[UIImagePickerControllerEditedImage] as? UIImage {
        imageView.image = image
    }
    else if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {
        imageView.image = image
    } else{
        print("Something went wrong")
    }

    self.dismiss(animated: true, completion: nil)
}

নীচে চেষ্টা করুন

    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
}

ফাংশন প্যারামিটারগুলিতে "_" যুক্ত করুন।

থেকে

func imagePickerController(picker: UIImagePickerController ...

থেকে

func imagePickerController(_ picker: UIImagePickerController ...

জিতেন্দ্র চৌধুরীর গৃহীত সমাধানটি কাজ করে A Instance method 'imagePickerController(_:didFinishPickingMediaWithInfo:)' nearly matches optional requirement 'imagePickerController(_:didFinishPickingMediaWithInfo:)' of protocol 'UIImagePickerControllerDelegate'

এবং সতর্কতা নিঃশব্দ করার জন্য @ ননোবজসি বা ব্যক্তিগত কীওয়ার্ডটি যুক্ত করার পরামর্শ দেয় you আপনি যদি এই পরামর্শগুলি ব্যবহার করে সতর্কতাটি চুপ করে থাকেন তবে সমাধানটি আর কাজ করবে না।


UINavigationControllerDelegate প্রতিনিধিও অন্তর্ভুক্ত করার UINavigationControllerDelegate নিশ্চিত হন। এটি আমার জন্য সমস্যাটি সমাধান করেছে।


func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {

         let image = info[UIImagePickerControllerOriginalImage] as? UIImage
        self.dismiss(animated: true, completion: nil)
        self.imageTook.image = image
    }

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)

}




xcode8