2010-10-08 14 views
41

Come convertire UIimage nella stringa codificata base64? Non sono riuscito a trovare esempi o codici con informazioni dettagliate.UIImage to base64 Codifica stringhe

+0

consultare http: // stackoverflow.com/questions/11251340/convert-image-to-base64-string-in-ios –

risposta

56

Mi chiedo perché non hai trovato la tua domanda perché è una domanda molto vecchia & può essere trovata here e here.

In ogni modo, è necessario aggiungere prima NSData categorie per il vostro progetto che sono disponibili da qui -

header e implementation poi convertire il vostro oggetto UIImage in NSData seguente modo:

NSData *imageData = UIImageJPEGRepresentation(image, 1.0); 

E quindi applicare la codifica Base64 per convertirla in una stringa codificata base64:

NSString *encodedString = [imageData base64Encoding]; 
+2

NSString * encodedString = [imageData base64Encoding]; – apple

+0

#import "MGTwitterEngineGlobalHeader.h" dove si trova questo motore ???? – coolcool1994

+0

http://svn.cocoasourcecode.com/MGTwitterEngine/MGTwitterEngineGlobalHeader.h - Tuttavia non dovrebbe essere richiesto e può essere rimosso dall'intestazione – Sagar

3

NSData (Base64) è stato modificato leggermente dall'ultima risposta in questa discussione.

si dovrebbe ora utilizzare:

NSData *base64EncodedImage = [UIImageJPEGRepresentation(img, 0.8) base64EncodingWithLineLength:0]; 
+0

base64EncodingWithLineLength restituisce NSData –

+0

grazie per aver notato, modificato –

7
@implementation UIImage (Extended) 

- (NSString *)base64String { 
    NSData * data = [UIImagePNGRepresentation(self) base64EncodedDataWithOptions:NSDataBase64Encoding64CharacterLineLength]; 
    return [NSString stringWithUTF8String:[data bytes]]; 
} 

@end 
+0

Perché non utilizzare base64EncodedStringWithOptions direttamente? –

+0

Quindi il codice non sembra spagato :) un buon habbit è quello di evitare 3 dichiarazioni reciproche come [Me doSmthh: [[Something execute: @ "..."] someTypeOfValue]]; –

44

Ci sono cambiamenti in iOS 7 che permettono che ciò avvenga senza l'uso di categorie esterne per supportare Base64 codifica/decodifica.

si può solo scrivere direttamente utilizzando:

- (NSString *)base64String { 
    return [UIImagePNGRepresentation(self) base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength]; 
} 
+4

Nota che questi metodi sono stati introdotti con iOS 7 ma 'base64Encoding' è stato reso disponibile su iOS 4. Quindi, a meno che tu non supporti ancora iOS 2 o 3 puoi usare' base64Encoding' o quello @Abizern menziona senza alcun framework esterno. – Pascal

+0

Grazie per aver menzionato la porta posteriore. – Abizern

+2

Ho avuto la fortuna di passare le opzioni di '0' invece di' NSDataBase64Encoding64CharacterLineLength'. In questo modo non inserisce alcuna interruzione di riga ed è utilizzabile in un URI 'data:' in UIWebView. – TalkLittle

8

Puoi seguire sottostante Codice

-(NSString *)imageToNSString:(UIImage *)image 
{ 
NSData *imageData = UIImagePNGRepresentation(image); 
    return [imageData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength]; 
} 

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

Grazie funziona ...! – Vidhyanand

0

durante la conversione in immagine in Base64 a Ios nuova linea “\ n” da Base64 codificati stringhe:

di questo codice:

 

UIImage* orginalImage = [info objectForKey:UIImagePickerControllerOriginalImage]; 



     NSIndexPath *indexPath = [NSIndexPath indexPathForRow:isRowIndex inSection:isSectionIndex] ; 

     UITableViewCell *cell = [jobstable cellForRowAtIndexPath:indexPath]; 

     UIImageView *tableIMAGE=(UIImageView *)[cell.contentView viewWithTag:19]; 

     tableIMAGE.image=orginalImage; 



imageStris = [UIImageJPEGRepresentation(tableIMAGE.image,1)base64Encoding]; 

answersARRAY[indexPath.row] = [NSString stringWithFormat:@"-1,%@,%@",answersARRAY[indexPath.row],imageStris]; 

[self dismissViewControllerAnimated:YES completion:nil]; 



1

Swift 3

uso base64EncodedString() per convertire dati() oggetto stringa base64

Per convertire un'immagine a stringa base64

var sample = UIImage(named: "image_logo") 
    let imageData:Data = UIImagePNGRepresentation(sample!)! 
    let base64String = imageData.base64EncodedString()