2017-09-19 7 views
0

Ich habe den folgenden Code, um ein Bild aus der Bibliothek und dann base64encode für den zukünftigen Upload auswählen ... Bild ausgewählt ist und erscheint in App, wie ich will ... aber in der Ausgabe bekomme ich diesen FehlerBase64 Bildcodierung Swift 4 iOS

[Entdeckung] Fehler beim entdecken Erweiterungen angetroffenen: Fehler Domain = PlugInKit-Code = 13 "Abfrage abgebrochen" Userinfo =

{NSLocalizedDescription = Abfrage abgebrochen} und wenn ich nehme den gedruckten base64 Code in Ausgang und einen webtool verwenden (https://www.base64decode.org/) zu versuchen, diese Informationen zu dekodieren, um zu bestätigen, dass es funktioniert hat, bevor ich später an der Dekodierung in iOS zu arbeiten beginnen - es scheint falsch zu sein? Ich gehe davon aus, dass ich das Bild nicht korrekt kodiere?

@IBAction func selectImage(_ sender: AnyObject) { 


     selectImage.allowsEditing = true //2 
     selectImage.sourceType = .photoLibrary //3 
     present(selectImage, animated: true, completion: nil)//4 


    } 

    func imagePickerController(_ selectImage: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 


     let chosenImage = info[UIImagePickerControllerEditedImage] as! UIImage //2 

     profilePic.contentMode = .scaleAspectFit //3 
     profilePic.image = chosenImage //4 

     let quality = 1.0 
     base64String = (UIImageJPEGRepresentation(chosenImage, CGFloat(quality))?.base64EncodedString())! 
     print (base64String) 

     self.dismiss(animated: true, completion: nil) //5 
    } 
+0

Die Antwort hat Ihnen geholfen? – GIJOW

Antwort

0

Ich benutze diese 2 Funktionen in meinem Projekt und es funktioniert gut.

func imageTobase64(image: UIImage) -> String { 
    var base64String = "" 
    let cim = CIImage(image: image) 
    if (cim != nil) { 
     let imageData = image.highQualityJPEGNSData 
     base64String = imageData.base64EncodedString(options: NSData.Base64EncodingOptions.lineLength64Characters) 
    } 
    return base64String 
} 

func base64ToImage(base64: String) -> UIImage { 
    var img: UIImage = UIImage() 
    if (!base64.isEmpty) { 
     let decodedData = NSData(base64Encoded: base64 , options: NSData.Base64DecodingOptions.ignoreUnknownCharacters) 
     let decodedimage = UIImage(data: decodedData! as Data) 
     img = (decodedimage as UIImage?)! 
    } 
    return img 
} 

Ich habe auch eine Erweiterung der Bildqualität zu handhaben, die nützlich sein können:

extension UIImage { 
    var highestQualityJPEGNSData:NSData { return UIImageJPEGRepresentation(self, 1.0)! as NSData } 
    var highQualityJPEGNSData:NSData { return UIImageJPEGRepresentation(self, 0.75)! as NSData} 
    var mediumQualityJPEGNSData:NSData { return UIImageJPEGRepresentation(self, 0.5)! as NSData } 
    var lowQualityJPEGNSData:NSData  { return UIImageJPEGRepresentation(self, 0.25)! as NSData} 
    var lowestQualityJPEGNSData:NSData { return UIImageJPEGRepresentation(self, 0.0)! as NSData } 
} 
+0

Ich kämpfe immer noch, aber sei dir sicher, dass ich die Lösung verbessern werde, wenn ich zu diesem kleinen Projekt zurückkomme – adamprocter

Verwandte Themen