7 votes

Existe-t-il un moyen de sélectionner uniquement les images "JPG", "PNG" et "JPEG" via UIImagePIcker ?

En utilisant self.imagePicker.mediaTypes = [(kUTTypeImage as String)] par le biais de UIImagePicker Je suis en mesure de sélectionner tous les types d'images, mais mon besoin est de sélectionner uniquement les images. JPG, JPEG and PNG taper des images dans la photothèque et GIF y HEIC (photos en direct) ne sont pas autorisées.

Alors, y a-t-il un moyen d'éviter de sélectionner GIFs y HEIC photo de type alors que imagePicker.sourceType = .photoLibrary

Code :

imagePicker.delegate = self

        let actionSheet = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)

        actionSheet.addAction(UIAlertAction(title: StringConstants.Actions.Camera, style: .default, handler: { (action:UIAlertAction) in
            CheckPermissions.checkPermission(permissionFor: .Camera,vc:self) { (success) in
                if success {
                    DispatchQueue.main.async {[unowned self] in
                        if(UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.camera)) {
                            self.view.endEditing(true)
                            self.imagePicker.allowsEditing = false
                            self.imagePicker.sourceType = UIImagePickerControllerSourceType.camera
                            self.imagePicker.cameraCaptureMode = .photo
                            self.imagePicker.showsCameraControls = true
                            self.imagePicker.modalPresentationStyle = .overFullScreen
                            self.present(self.imagePicker, animated: true, completion: nil)
                        }
                        else {
                            self.showAlert(withTitle: kEmptyString, message: StringConstants.AlertMessage.cameraAlertMessage, andOkAction: nil )
                        }
                    }
                }
            }
        }))

        actionSheet.addAction(UIAlertAction(title: StringConstants.Actions.PhotoLibrary, style: .default, handler: { (action:UIAlertAction) in
            CheckPermissions.checkPermission(permissionFor: .PhotoLibrary,vc: self) { (success) in
                if success {
                    DispatchQueue.main.async {[unowned self] in
                        self.view.endEditing(true)
                        self.imagePicker.allowsEditing = false
                        self.imagePicker.sourceType = .photoLibrary
                        self.imagePicker.modalPresentationStyle = .overFullScreen
                        self.imagePicker.navigationBar.isTranslucent = false
                        self.imagePicker.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor : UIColor.white]
                        self.present(self.imagePicker, animated: true, completion: nil)
                    }
                }
            }

        }))

1voto

Maddyヅヅ Points 1206

Tout simplement non. Il n'y a aucun moyen de donner une entrée de formate spécifique aux UIImagePicker et obtenir le résultat de ce seul formate.

UIImagePicker accepte uniquement kUTTypeMovie y kUTTypeImage en tant que mediaType . Ce que vous pouvez faire, c'est vérifier l'extension de l'image/du fichier après avoir sélectionné une image dans la liste des images. didFinishPickingMediaWithInfo .

0voto

Miki Points 190

Avez-vous essayé comme ça ?

self.imagePicker.mediaTypes = [(kUTTypeGIF as String), 
                               (kUTTypeJPEG as String), 
                               (kUTTypePNG as String)]

Et n'oubliez pas d'importer MobileCoreServices cadre.

0voto

Komal Gupta Points 99

Vous devez mentionner les identifiants des seuls formats requis.

Mesures à prendre pour résoudre ce problème

  1. import MobileCoreServices

  2. Prenez une variable de ImagePickerController, disons

    let picker = UIImagePickerController()
  3. Spécifiez le type de support comme suit

    picker.mediaTypes = [(kUTTypePNG as String), (kUTTypeJPEG as String), (kUTTypeImage as String)] // This is an array - you can add other format Strings as well

Pour faire une vérification croisée, vous verrez que les vidéos/GIFs ne seront pas montrés à l'utilisateur de l'application s'ils ne sont pas mentionnés comme type de média.

-1voto

Haya Hashmat Points 143

Vous pouvez spécifier les types de médias sélectionnés dans la vue du sélecteur comme ceci :

picker.mediaTypes = [(kUTTypePNG as String)]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X