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.
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];
}