2016-03-28 16 views
3

Derzeit versuche ich Bild an Backend zu senden, um ein Bild in meinem Projekt hochzuladen. Ich habe alle möglichen Antworten auf Stack-Überlauf und anderswo gesehen, kann aber die Daten nicht erfolgreich zum Backend senden. Selbst wenn ich aufgrund eines Problems (höchstwahrscheinlich aufgrund von Leerzeichen, wie ich mich fühle) sende, ist das Bild, das auf der Backend-Seite dekodiert wurde, nicht im richtigen Format.Korrekte Art der Codierung Bild als Base64String

-Code zu kodieren -

let imageData1 : NSData = UIImageJPEGRepresentation(slctdImage, 0.1)! 
     let base64StringNew1 = imageData1.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0)) 

nun die intresting Teil -

Wenn ich dekodieren, dass lokal SWIFT-Code, habe ich das Bild und ich bin in der Lage, Zeigen Sie es in einer Bildansicht an. Aber die gleiche Zeichenfolge, wenn ich in einem Online-bse64-Konverter konvertiere, bekomme ich nicht das Ergebnis.

Code zur Dekodierung verwendet -

let decodedData = NSData(base64EncodedString:base64StringNew1, options: NSDataBase64DecodingOptions.IgnoreUnknownCharacters) 

Was könnte mein Problem sein. Kann jemand bitte den richtigen Weg vorschlagen, Bilder mit base64String in das Backend hochzuladen?

Antwort

0

Im Folgenden Code für die Bildcodierung.

let image: UIImage = imgProfilePic.image! 

    let size = CGSizeApplyAffineTransform(image.size, CGAffineTransformMakeScale(0.3, 0.3)) 
    let hasAlpha = false 
    let scale: CGFloat = 0.0 // Automatically use scale factor of main screen 

    UIGraphicsBeginImageContextWithOptions(size, !hasAlpha, scale) 
    image.drawInRect(CGRect(origin: CGPointZero, size: size)) 

    let scaledImage = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

    var imageData = UIImageJPEGRepresentation(scaledImage, 0.9) 
    var base64String = imageData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0)) // encode the image 

    var cd = CoreDataUser(pstrContext: "this") 

    var params = "strUsername=" + cd.getUsername() 
    params = params + "&strPassword=" + cd.getPassword() 
    params = params + "&blbProfilePic=" + base64String 

PHP-Code, in dem die Base64-Zeichenfolge decodiert und im Browser angezeigt wird.

if ($rows) { 
    foreach ($rows as $row) { 
    $data = base64_decode($row["fblbProfilePic"]); 
    $image = imagecreatefromstring($data); 
    header('Content-Type: Image/jpeg'); 
    imagejpeg($image); 
//file_put_contents("test.jpg", $data); 
//var_dump($data); 

    //echo base64_decode($row["fblbPicture"]); 
    / /echo '<img src="data:image/jpg;base64,' . $row["fblbPicture"]  . '" />'; 
    } 
Verwandte Themen