Descodificar PNG codificado en Base-64 en un NSString

Tengo algunos NSData que están codificados en Base-64 y me gustaría decodificarlos, he visto un ejemplo que se parece a esto

 NSData* myPNGData = [xmlString dataUsingEncoding:NSUTF8StringEncoding]; [Base64 initialize]; NSData *data = [Base64 decode:img]; cell.image.image = [UIImage imageWithData:myPNGData]; 

Sin embargo, esto me da una gran cantidad de errores. Me gustaría saber qué hacer para que esto funcione. ¿Hay algún tipo de archivo que necesite importar a mi proyecto o tengo que incluir un marco?

Estos son los errores que obtengo

 Use of undeclared identifier 'Base64' Use of undeclared identifier 'Base64' Use of undeclared identifier 'cell' 

He buscado en todas partes y no puedo entender qué es lo que hay que hacer.

Los archivos de la biblioteca NSData Base64 te ayudarán.

 #import "NSData+Base64.h" //Data from your string is decoded & converted to UIImage UIImage *image = [UIImage imageWithData:[NSData dataFromBase64String:strData]]; 

Espero eso ayude

Versión de Swift 3

Es más o menos lo mismo

 //Create your NSData object let data = NSData(base64Encoded: "yourStringData", options: NSData.Base64DecodingOptions.ignoreUnknownCharacters) //And then just create a new image based on the data object let image = UIImage(data: data as! Data) 

Versión de Swift 2.3

 //Create your NSData object let data = NSData(base64EncodedString: "yourStringData", options: .IgnoreUnknownCharacters) //And then just create a new image based on the data object let image = UIImage(data: data!) 

Puede decodificar una cadena codificada en Base64 a NSData :

 -(NSData *)dataFromBase64EncodedString:(NSString *)string{ if (string.length > 0) { //the iPhone has base 64 decoding built in but not obviously. The trick is to //create a data url that's base 64 encoded and ask an NSData to load it. NSString *data64URLString = [NSString stringWithFormat:@"data:;base64,%@", string]; NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:data64URLString]]; return data; } return nil; } 

Ejemplo de uso del método anterior para obtener una imagen de la cadena Base64:

 -(void)imageFromBase64EncodedString{ NSString *string = @""; // replace with encocded string NSData *imageData = [self dataFromBase64EncodedString:string]; UIImage *myImage = [UIImage imageWithData:imageData]; // do something with image } 
 //retrieve your string NSString *string64 = //... some string base 64 encoded //convert your string to data NSData *data = [[NSData alloc] initWithBase64EncodedString:string64 options:NSDataBase64DecodingIgnoreUnknownCharacters]; //initiate image from data UIImage *captcha_image = [[UIImage alloc] initWithData:data]; 
  NSString *base64String=@"............"; NSData* data = [[NSData alloc] initWithBase64EncodedString:base64String options:0]; UIImage* img = [UIImage imageWithData:data]; //imageview is the refrence outlet of image view self.imageview.image=img; 

Esto funcionará para ios7 y superior.

 - (UIImage *)decodeBase64ToImage:(NSString *)strEncodeData { NSData *data = [[NSData alloc]initWithBase64EncodedString:strEncodeData options:NSDataBase64DecodingIgnoreUnknownCharacters]; return [UIImage imageWithData:data]; } 

Y usa el código así:

 UIImage *img = [self decodeBase64ToImage:]; 

Swift 3 versión

Use tipo de datos en lugar de NSData

 let data = Data(base64Encoded: imageBase64String, options: Data.Base64DecodingOptions.ignoreUnknownCharacters) let image = UIImage(data:data!)