2016-10-19 2 views
-1

J'essaye de convertir mon UIImage d'un UIImageView en une chaîne car les données sont stockées en Base64. J'utilise la méthode ci-dessous pour convertir l'image mais elle tombe quand on essaye de mettre à jour convertistr.Obtention d'une erreur lors de la conversion de UIImage en NSSString via NSData

func convertImg() { 
    let imageData: NSData = UIImagePNGRepresentation(imageView.image!)! as NSData 
    convertedStr = NSString(data: imageData as Data, encoding: String.Encoding.utf8.rawValue)! 
} 

Cette fonction concerne environ la version 10 car j'ai essayé différentes manières mais le résultat est toujours le même. L'erreur renvoyée est

'fatal error: unexpectedly found nil while unwrapping an Optional value' and

'function signature specialization) ->() to @callee_owned (@unowned Swift.UnsafeBufferPointer) -> (@out()), Argument Types : [@callee_owned (@unowned Swift.UnsafeBufferPointer) ->()]> of generic specialization of Swift.StaticString.withUTF8Buffer ((Swift.UnsafeBufferPointer) -> A) -> A'

pourrait-il que la méthode que je utilise nécessite un fichier .png et ne fonctionnera pas avec UIImage?

+2

(NS) de données a une méthode 'base64EncodedString()' qui pourrait être ce que vous cherchez. - L'interprétation des données de pixels en tant que chaîne UTF-8 ne peut qu'échouer. –

+0

besoin d'afficher l'image dans le serveur? – KKRocks

+0

vérifiez cela: http://stackoverflow.com/questions/11251340/convert-between-uiimage-and-base64-string?answertab=votes#tab-top – KKRocks

Répondre

1

Dans Swift

Encode dans 2,0 rapide et inférieure

let image : UIImage = UIImage(named:"imageNameHere")! 
//Now use image to create into NSData format 
let imageData:NSData = UIImagePNGRepresentation(image)! 

let strBase64:String = imageData.base64EncodedStringWithOptions(.Encoding64CharacterLineLength) 

Decode

let dataDecoded:NSData = NSData(base64EncodedString: strBase64, options: NSDataBase64DecodingOptions(rawValue: 0))! 
let decodedimage:UIImage = UIImage(data: dataDecoded)! 
print(decodedimage) 
yourImageView.image = decodedimage 
+0

Cela a fonctionné, merci – user616076

1
func convertImg() { 
    let imageData: NSData = UIImagePNGRepresentation(imageView.image!)! as NSData 
    convertstr = imageData.base64EncodedString(options: lineLength64Characters) 

}