Search code examples
ios7base64encode

encode images in code 64 for CLOB in iOS7


I usually use this code form encode/decode images to base64 and can insert in CLOB in database.

//Return image encoded to base64
- (NSString *)encodeToBase64String:(UIImage *)image {
NSData * data = [UIImagePNGRepresentation(image) base64EncodedDataWithOptions:NSDataBase64Encoding64CharacterLineLength];
NSString *convertido=[data base64EncodedStringWithOptions:kNilOptions];
return convertido;
}

//Descodifica la foto de string a imagen se le llama mas arriba

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

But from iOS7, can read the images right and decode, but when i encode in ios7 a image from my gallery or camera an update database, this images has bad format and crash my images.

How can encode a imagen in String base64 without crash my format.


Solution

  • I can fixed with this encode:

     - (NSData*)encodeDictionary2:(NSDictionary*)dictionary {
           NSMutableArray *parts = [[NSMutableArray alloc] init];
            for (NSString *key in dictionary) {
            NSString *encodedValue = [dictionary objectForKey:key];
            NSString *encodedKey = [key stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
            NSString *part = [NSString stringWithFormat: @"%@=%@", encodedKey, encodedValue];
            [parts addObject:part];
        }
        NSString *encodedDictionary = [parts componentsJoinedByString:@"&"];
        return [encodedDictionary dataUsingEncoding:NSUTF8StringEncoding];
    }