How to convert UIimage
to base64 encoded string? I couldn't find any examples or codes with detailed regarding.

- 15,729
- 10
- 59
- 55

- 469
- 1
- 5
- 6
-
Refer http://stackoverflow.com/questions/11251340/convert-image-to-base64-string-in-ios – Paresh Navadiya Aug 21 '14 at 06:24
7 Answers
I wonder why didn't you find your question because it's a very old question & can be found here.
Anyways,
You need to first add NSData
categories to your project which are available from here -
header and implementation
Then convert your UIImage
object into NSData
the following way:
NSData *imageData = UIImageJPEGRepresentation(image, 1.0);
And then apply Base64 encoding to convert it into a base64
encoded string:
NSString *encodedString = [imageData base64Encoding];
-
http://svn.cocoasourcecode.com/MGTwitterEngine/MGTwitterEngineGlobalHeader.h -- However it should not be required and can be removed from header – Sagar May 09 '13 at 05:48
-
There are changes in iOS 7 that allow this to be done without using any external categories to support Base64 encoding/decoding.
You could just write it directly using:
- (NSString *)base64String {
return [UIImagePNGRepresentation(self) base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
}

- 146,289
- 39
- 203
- 257
-
4Note that these methods have been introduced with iOS 7 but `base64Encoding` has been made available back to iOS 4. So unless you still support iOS 2 or 3 you can use `base64Encoding` or the one @Abizern mentions without any external frameworks. – Pascal Oct 26 '13 at 21:40
-
-
2I had better luck when passing options of `0` instead of `NSDataBase64Encoding64CharacterLineLength`. That way it does not insert any line breaks, and is usable in a `data:` URI in UIWebView. – TalkLittle Apr 01 '14 at 17:56
-
1
-
You can follow below code
-(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];
}

- 602
- 9
- 24
@implementation UIImage (Extended)
- (NSString *)base64String {
NSData * data = [UIImagePNGRepresentation(self) base64EncodedDataWithOptions:NSDataBase64Encoding64CharacterLineLength];
return [NSString stringWithUTF8String:[data bytes]];
}
@end

- 19,915
- 16
- 123
- 179
-
-
So the code doesn't look like spagety :) a good habbit is to avoid 3 statements in each other like [Me doSmthh:[[Something execute:@"..."] someTypeOfValue]]; – Peter Lapisu Apr 24 '14 at 11:28
NSData (Base64) has changed slightly since the last reply in this thread.
you should now use:
NSData *base64EncodedImage = [UIImageJPEGRepresentation(img, 0.8) base64EncodingWithLineLength:0];

- 1,210
- 1
- 16
- 17
Swift 3
I use base64EncodedString() to convert Data() object to base64 string
To convert image to base64 string
var sample = UIImage(named: "image_logo")
let imageData:Data = UIImagePNGRepresentation(sample!)!
let base64String = imageData.base64EncodedString()

- 2,917
- 30
- 28
when converting to image to base64 in ios the new line “\n” from base64 encoded strings :
use this code :
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];