2010-10-08 21 views
41

Cómo convertir UIimage en cadena codificada en base64? No pude encontrar ningún ejemplo o código con detalles relacionados.UIImage a base64 Codificación de cadena

+0

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

Respuesta

56

Me pregunto por qué no ha encontrado su pregunta porque es una pregunta muy antigua & se puede encontrar here y here.

De todas formas, es necesario agregar primera NSData categorías para su proyecto que están disponibles aquí -

header y implementation A continuación, convertir el objeto UIImage en NSData la siguiente manera:

NSData *imageData = UIImageJPEGRepresentation(image, 1.0); 

Y luego aplique Base64 codificación para convertirla en una cadena codificada base64:

NSString *encodedString = [imageData base64Encoding]; 
+2

NSString * encodedString = [imageData base64Encoding]; – apple

+0

#import "MGTwitterEngineGlobalHeader.h" ¿Dónde está este motor ???? – coolcool1994

+0

http://svn.cocoasourcecode.com/MGTwitterEngine/MGTwitterEngineGlobalHeader.h - Sin embargo, no debería ser necesario y puede eliminarse del encabezado – Sagar

3

NSData (Base64) ha cambiado ligeramente desde la última respuesta en este hilo.

Ahora debería utilizar:

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

base64EncodingWithLineLength devuelve NSData –

+0

gracias por notar, editado –

7
@implementation UIImage (Extended) 

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

@end 
+0

¿Por qué no utilizar base64EncodedStringWithOptions directamente? –

+0

Así que el código no se ve como spagety :) un buen habito es evitar 3 declaraciones entre sí como [Me doSmthh: [[Something execute: @ "..."] someTypeOfValue]]; –

44

Hay cambios en iOS 7 que permiten que esto se haga sin necesidad de utilizar ninguna categoría externos para apoyar la base 64 de codificación/decodificación.

Se podía escribirlo directamente a través de:

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

Tenga en cuenta que estos métodos se han introducido con iOS 7 pero 'base64Encoding' ha vuelto a estar disponible en iOS 4. De modo que a menos que todavía admita iOS 2 o 3, puede usar' base64Encoding' o el que @Abizern menciona sin ningún framework externo. – Pascal

+0

Gracias por mencionar el puerto posterior. – Abizern

+2

Tuve mejor suerte al pasar opciones de '0' en lugar de' NSDataBase64Encoding64CharacterLineLength'. De esta forma, no inserta ningún salto de línea y se puede usar en un URI 'data:' en UIWebView. – TalkLittle

8

que puede seguir a continuación código

-(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

¡Gracias funciona ...! – Vidhyanand

0

al convertir la imagen a base 64 en ios la nueva línea “\ n” de base64 cadenas:

utilizar este código:

 

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

utilizo base64EncodedString() para convertirde datos() objeto de cadena de base 64

Para convertir una imagen a cadena base64

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