[英]Objective-c Base64 encoding
NSString *base64String = [UIImagePNGRepresentation(myimage) base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
I am trying to convert uiimage to base64 string. 我正在尝试将uiimage转换为base64字符串。 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==
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?
怎么了?
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 您在编码图像时使用的是解码类型
In the post data your base64 "+" character was translate to " " character. 在发布数据中,您的base64“ +”字符已转换为“”字符。
So you have got the invalid base64 string. 因此,您获得了无效的base64字符串。
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
任何一种实现编码字符串的类型
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. 通常,当我们将图像转换为Base64编码时,我们需要转换“解码图像”。仅对图像进行编码。此后,必须转换为解码格式。
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];
I have made one method in which you just need to pass uiimage and it will return a base64 string. 我提出了一种方法,您只需要传递uiimage即可返回base64字符串。
- (NSString *)encodeToBase64String:(UIImage *)image {
return [UIImagePNGRepresentation(image) base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.