246 votes

Convertir Image en Base64 string dans iOS + Swift

Quelqu'un sait-il comment convertir Image en Base64 string dans iOS.

J’ai le code ci-dessous, l’image originale avant l’encodage est bon, mais je ne reçois image vide après j’ai encoder et décoder. Merci,

595voto

Prince Points 16165

Swift

//create image instance
//with image name from bundle
var image : UIImage = UIImage(named:"imageNameHere")
var imageData = UIImagePNGRepresentation(image)

//OR with path
var url:NSURL = NSURL.URLWithString("urlHere")
var imageData:NSData = NSData.dataWithContentsOfURL(url, options: nil, error: nil)

L'encodage

let base64String = imageData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.fromRaw(0)!)
println(base64String)

Décodage

let decodedData = NSData(base64EncodedString: base64String, options: NSDataBase64DecodingOptions.fromRaw(0)!)
var decodedimage = UIImage(data: decodedData)
println(decodedimage)
yourImageView.image = decodedimage as UIImage

iOS7 > version pour Objective-C

Vous pouvez utiliser NSData's base64EncodedStringWithOptions

Maintenant, encode comme:

- (NSString *)encodeToBase64String:(UIImage *)image {
 return [UIImagePNGRepresentation(image) base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
}

Decode comme:

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

iOS 6.1>

Première Option : Utiliser ce lien pour encode et decode image

Ajouter Base64 classe dans votre project. Maintenant, encode comme:

 NSData* data = UIImageJPEGRepresentation(yourImage, 1.0f);
 NSString *strEncoded = [Base64 encode:data];

Decode comme:

 NSData* data = [Base64 decode:strEncoded ];;
 image.image = [UIImage imageWithData:data];

Une autre Option: Utiliser QSUtilities pour encoding et decoding

7voto

Peter Lapisu Points 3274
@implementation UIImage (Extended)

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

@end

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X