[英]Objective-c Base64 encoding
NSString *base64String = [UIImagePNGRepresentation(myimage) base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
我正在尝试将uiimage转换为base64字符串。 但是我认为它给出了错误的结果。 它给出了这个字符串:
iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAA \\ r \\ nABxpRE9UAAAAAgAAAAAAAAAMAAAAKAAAAAwAAAAMAAAAnHRoHj4AAABoSURBVEgN \\ r \\ nYvj // z8DLTFNDQc5fNQCgiHAcJSBxekYA + MmIN5PZbwJZDbDMQam + 0D8n0b4PtAC \\ r \\ nxnU0MhzoaMZ1QAsYhIAWnKOBJUAzGYTAkUQDS8CGo + QDKloCNxzFAhCHCpagGA4y \\ r \\ nEwAAAP // PscxrwAAAGxJREFU7ZJBCsAgDASX / QB + 22cVPPZLafZQsGDM2rOHhZDE \\ r \\ nGQjCzNCnAaXhuD22GH + D0rNYf + Dv8IdkCA8FHCxIQvhUIEqm8FSQSFK4JAgkElwW \\ r \\ ncPECTv9VlWHNnhJpSQFFO1uQXiBdiG6r9h9C14aGNgNBwQAAAABJRU5ErkJggg ==
但这是空的图像。 怎么了?
更改:
NSString *base64String = [UIImagePNGRepresentation(myimage) base64EncodedStringWithOptions:NSDataBase64DecodingIgnoreUnknownCharacters];
至:
NSString *base64String = [UIImagePNGRepresentation(myimage) base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];
编码类型:
NSDataBase64Encoding64CharacterLineLength
NSDataBase64Encoding76CharacterLineLength
NSDataBase64EncodingEndLineWithCarriageReturn
NSDataBase64EncodingEndLineWithLineFeed
解码类型:
NSDataBase64DecodingIgnoreUnknownCharacters
您在编码图像时使用的是解码类型
在发布数据中,您的base64“ +”字符已转换为“”字符。
因此,您获得了无效的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:@" "];
希望这会帮助你。 任何一种实现编码字符串的类型
通常,当我们将图像转换为Base64编码时,我们需要转换“解码图像”。仅对图像进行编码。此后,必须转换为解码格式。
编码方式
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];
解码
NSData *dataImageDecode = [[NSData alloc]initWithBase64EncodedString:strEncodedBase64 options:NSDataBase64DecodingIgnoreUnknownCharacters];
UIImage *imageDecode = [UIImage imageWithData:dataImageDecode];
我提出了一种方法,您只需要传递uiimage即可返回base64字符串。
- (NSString *)encodeToBase64String:(UIImage *)image {
return [UIImagePNGRepresentation(image) base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.