2014-03-07 14 views
9

Hier ist mein Code.Bild in Base64 kodieren, eine ungültige Base64-Zeichenfolge abrufen (IOS mit Base64EncodedStringWithOptions)

Und ich bekomme immer ungültige Base64-Zeichenfolge, die Speicherplatz enthalten.

iVBORw0KGgoAAAANSUhEUgAAARMAAAC3CAIAAAC MS2jAAAAHGlET1QAAAACAAAAAAAAAFwAAAAoAAAAXAAAAFsAAAMC oRdmgAAAs5JREFUeAHs1tFKI1EABFH//5NNVh02uA LQhwoCZ0zj5LbTlffInl58yCAwM8JvPz8iBMIIPDGHJcAgTMEmHOGmjMIMMcdQOAMAeacoeYMAsxxBxA4Q4A5Z6g5gwBz3IGHIPD zfMQL/fVSzDnKyr 9usEvhHn/ddf5N5/yJx7SflcSoA5KV7hz0Lgn0gPW9h3zsNO81wvdr1e/3w R3PmPNf82p4mcLlcDnlu/txCbvKcDqwP s6pCcu/i8Bhzn/yMOcucD705ARe/z43eY5fbQcN5jz5lVB/k4Bfa5u7alUTYE5NWP4mAeZs7qpVTYA5NWH5mwSYs7mrVjUB5tSE5W8SYM7mrlrVBJhTE5a/SYA5m7tqVRNgTk1Y/iYB5mzuqlVNgDk1YfmbBJizuatWNQHm1ITlbxJgzuauWtUEmFMTlr9JgDmbu2pVE2BOTVj JgHmbO6qVU2AOTVh ZsEmLO5q1Y1AebUhOVvEmDO5q5a1QSYUxOWv0mAOZu7alUTYE5NWP4mAeZs7qpVTYA5NWH5mwSYs7mrVjUB5tSE5W8SYM7mrlrVBJhTE5a/SYA5m7tqVRNgTk1Y/iYB5mzuqlVNgDk1YfmbBJizuatWNQHm1ITlbxJgzuauWtUEmFMTlr9JgDmbu2pVE2BOTVj JgHmbO6qVU2AOTVh ZsEmLO5q1Y1AebUhOVvEmDO5q5a1QSYUxOWv0mAOZu7alUTYE5NWP4mAeZs7qpVTYA5NWH5mwSYs7mrVjUB5tSE5W8SYM7mrlrVBJhTE5a/SYA5m7tqVRNgTk1Y/iYB5mzuqlVNgDk1YfmbBJizuatWNQHm1ITlbxJgzuauWtUEmFMTlr9JgDmbu2pVE2BOTVj JgHmbO6qVU2AOTVh ZsEmLO5q1Y1AebUhOVvEmDO5q5a1QSYUxOWv0mAOZu7alUTYE5NWP4mAeZs7qpVTeADAAD//66TqMcAAAIISURBVO3TsQ0AAAjDMP4/GnEDmc3exSKzjgCBv8D8JxYECKxyPAGBIqCcomZDQDl gEARUE5RsyGgHD9AoAgop6jZEFCOHyBQBJRT1GwIKMcPECgCyilqNgSU4wcIFAHlFDUbAsrxAwSKgHKKmg0B5fgBAkVAOUXNhoBy/ACBIqCcomZDQDl gEARUE5RsyGgHD9AoAgop6jZEFCOHyBQBJRT1GwIKMcPECgCyilqNgSU4wcIFAHlFDUbAsrxAwSKgHKKmg0B5fgBAkVAOUXNhoBy/ACBIqCcomZDQDl gEARUE5RsyGgHD9AoAgop6jZEFCOHyBQBJRT1GwIKMcPECgCyilqNgSU4wcIFAHlFDUbAsrxAwSKgHKKmg0B5fgBAkVAOUXNhoBy/ACBIqCcomZDQDl gEARUE5RsyGgHD9AoAgop6jZEFCOHyBQBJRT1GwIKMcPECgCyilqNgSU4wcIFAHlFDUbAsrxAwSKgHKKmg0B5fgBAkVAOUXNhoBy/ACBIqCcomZDQDl gEARUE5RsyGgHD9AoAgop6jZEFCOHyBQBJRT1GwIKMcPECgCyilqNgSU4wcIFAHlFDUbAsrxAwSKgHKKmg0B5fgBAkVAOUXNhoBy/ACBIqCcomZDQDl gEARUE5RsyGgHD9AoAgop6jZEFCOHyBQBJRT1GwIKMcPECgCB/GnRcSfso/fAAAAAElFTkSuQmCC 

So verwirrt.

Wenn ich versuche, entfernen Sie den Platz in der Base64-Zeichenfolge, und dekodieren Sie es.

Ich kann nicht Ursprungsbild erhalten.

+0

Ihr Code fehlt mindestens einen Schritt (Woher kam imageData?) Könnten Sie den vollständigen Code posten? –

+0

Entschuldigung, das habe ich verpasst. Ich habe es bearbeitet. –

Antwort

16

Ich denke, Sie sollten die Optionen Parameter

ändern ersetzen:

NSString *imageString = [imageData base64EncodedStringWithOptions:0]; 

An:

NSString *imageString = [imageData base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed]; 

Und für den Fall würde es Ihnen gefällt:

- (NSString *)imageToNSString:(UIImage *)image 
{ 
    NSData *data = UIImagePNGRepresentation(image); 

    return [data base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed]; 
} 

- (UIImage *)stringToUIImage:(NSString *)string 
{ 
    NSData *data = [[NSData alloc]initWithBase64EncodedString:string options:NSDataBase64DecodingIgnoreUnknownCharacters]; 

    return [UIImage imageWithData:data]; 
} 

Denken Sie daran, dass Dies ist ein iOS 7 API.

+0

Ich habe Ihren Ratschlag versucht. Aber ich habe immer noch ungültige Base64 String –

+0

Hallo Yu, ich habe dies für eine Weile verwendet, ich denke, dein Fehler ist woanders. Haben Sie versucht, die Methoden zu verwenden? – Logan

+0

Macht es einen Unterschied, wenn Sie EncodingEndLineWithLineFeed anstelle von Encoding64CharacterLineLength (Swift) verwenden? Encoding UIImage to base64 string funktioniert nicht ganz, aber versuche mit EncodingEndLineWithLineFeed – Crashalot

2

Yap, ich finde das Problem ist, ich kodiere nicht die URL.

In den Post-Daten wurde mein base64 "+" Zeichen in "" Zeichen übersetzt.

So bekomme ich die ungültige Base64-Zeichenfolge.

Dank Logan.

+2

können Sie mich teilen Wie haben Sie es gelöst? –

1

ersetzen + zu % 2B ios alle + auf "" Raum ersetzen, das Bild machen ungültig

auch Backend es zu

- (NSString *)base64String:(UIImage*)image {return [[UIImageJPEGRepresentation(image,1) base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed] stringByReplacingOccurrencesOfString:@"+" withString:@"%2B"];} 
0

von Fadi Abuzant inspiriert handhaben muss hier antworten die Swift 3 Version

stringBase64 = stringBase64.replacingOccurrences(of: "+", with: "%2B") 
Verwandte Themen