0
NSString *base64String = [UIImagePNGRepresentation(myimage) base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];

I am trying to convert uiimage to base64 string. But i think it gives wrong result. It gives this string:

iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAA\r\nABxpRE9UAAAAAgAAAAAAAAAMAAAAKAAAAAwAAAAMAAAAnHRoHj4AAABoSURBVEgN\r\nYvj//z8DLTFNDQc5fNQCgiHAcJSBxekYA+MmIN5PZbwJZDbDMQam+0D8n0b4PtAC\r\nxnU0MhzoaMZ1QAsYhIAWnKOBJUAzGYTAkUQDS8CGo+QDKloCNxzFAhCHCpagGA4y\r\nEwAAAP//PscxrwAAAGxJREFU7ZJBCsAgDASX/qB+22cVPPZLafZQsGDM2rOHhZDE\r\nGQjCzNCnAaXhuD22GH+D0rNYf+Dv8IdkCA8FHCxIQvhUIEqm8FSQSFK4JAgkElwW\r\ncPECTv9VlWHNnhJpSQFFO1uQXiBdiG6r9h9C14aGNgNBwQAAAABJRU5ErkJggg==

But this is an empty image. What is wrong?

user
  • 113
  • 1
  • 11

4 Answers4

0

Change:

NSString *base64String = [UIImagePNGRepresentation(myimage) base64EncodedStringWithOptions:NSDataBase64DecodingIgnoreUnknownCharacters];

To:

NSString *base64String = [UIImagePNGRepresentation(myimage) base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];

types of encoding:

   NSDataBase64Encoding64CharacterLineLength     
   NSDataBase64Encoding76CharacterLineLength     
   NSDataBase64EncodingEndLineWithCarriageReturn     
   NSDataBase64EncodingEndLineWithLineFeed

types of decoding:

NSDataBase64DecodingIgnoreUnknownCharacters

you are using type of decoding while encoding image

KDeogharkar
  • 10,939
  • 7
  • 51
  • 95
0

In the post data your base64 "+" character was translate to " " character.

So you have got the invalid base64 string.

UIImage *img = [UIImage imageNamed:@"white.jpeg"];
NSData *imageData = UIImagePNGRepresentation(img);
NSString *imageString = [imageData base64EncodedStringWithOptions:0]; // type one

NSString *imageString = [imageData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
//type two 
NSString *str = [imageString stringByReplacingOccurrencesOfString:@"+" withString:@" "];

Hope this will help you. Any one type to achieve the encode string

HariKrishnan.P
  • 1,204
  • 13
  • 23
0

Generally when we convert image into Base64 Encoding,we need to convert Decoding the image.You encoded the image only.After that you must convert into decoded format.

Encoding

UIImage *imageEncode = [UIImage imageNamed:@"yourImage.png"];  // or yourImage.jpeg
NSData *dataImageEncode = UIImageJPEGRepresentation(imageEncode, 1.0);
           //OR
NSData *dataImage = UIImagePNGRepresentation(image);
NSString *strEncodedBase64 = [dataImageEncode base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];

Decoding

NSData *dataImageDecode = [[NSData alloc]initWithBase64EncodedString:strEncodedBase64 options:NSDataBase64DecodingIgnoreUnknownCharacters];
UIImage *imageDecode  = [UIImage imageWithData:dataImageDecode];
user3182143
  • 9,459
  • 3
  • 32
  • 39
0

I have made one method in which you just need to pass uiimage and it will return a base64 string.

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