[RESOLU] [SWIFT] Problème d'image / base64

InsouInsou Membre
juin 2016 modifié dans API UIKit #1

Me revoilà  avec un nouveau soucis tordu  :p


A croire que chaque jour, je tombe sur un problème bizarre..


 


Alors, cette fois ci, je cherche à  convertir une image en base64 afin de l'ajouter à  une String pour l'envoyer au php.. dans la théorie, rien de ouf ^^


 


La façon dont je récupère l'image m'inquiète un peu..


 


En gros, j'utilise Eureka, je récupère mon formulaire et dedans il y a un champs ImageRow qui me permet de choisir une image dans le téléphone.



let valeursFormulaire = self.form.values(includeHidden: true) // récupère tout les champs du formulaire

for (idvaleur,valeur):(String, Any?) in valeursFormulaire { // Pour chaque champs trouvés
if let laValeur = valeur {
let typeDeChamps = String(laValeur.dynamicType) // recupère le type de champs

switch(typeDeChamps){

case "UIImage": // dans le cas d'une image
print("\(typeDeChamps)"+" "+"\(idvaleur)"+" "+"\(laValeur)")

default:
Données[idvaleur] = String(laValeur)
}
}

Dans laValeur que me ressort mon print, je me retrouve avec ça :


 


<UIImage: 0x7f94caa88fe0> size {3000, 2002} orientation 0 scale 1.000000

 


Du coup, je ne sais pas comment utiliser ça pour le convertir en UIImage..


Le but étant d'avoir un UIImage que je puisse convertir ensuite en base64 (là  je pense que je pourrais me débrouiller)


 


Avez-vous une idée ? Une piste ?  :*


Mots clés:

Réponses

  • LarmeLarme Membre

    Si j'ai bien suivi: let image = laValeur as UIImage (ou un truc du genre)


     


    UIImage vers NSData, via UIJPEGRepresentation() (par exemple).


    NSData vers NSString via base64encoding.


     


    Chemin inverse ensuite pour revenir.


  • InsouInsou Membre

    Ah bah voila, c'est ce qu'il me manquait le : let image = laValeur as! UIImage


    J'savais pas qu'on pouvais l'utiliser comme ça ^^


     


    Pour ceux que ça pourrait aider : 



    let monImage = laValeur as! UIImage
    let imageData:NSData = UIImagePNGRepresentation(monImage)!
    let strBase64:String = imageData.base64EncodedStringWithOptions(.Encoding64CharacterLineLength)

    Merci Larme  :D


  • LarmeLarme Membre

    En relisant ton log, il me semble que UIImage retient la rotation (property imageOrientation), mais du coup, si elle n'est pas up, je ne suis pas sûr que UIImagePNGRepresentation() ne le prenne pas en compte. Tu risques d'avoir potentiellement quelques soucis d'orientation par la suite.


Connectez-vous ou Inscrivez-vous pour répondre.