[英]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.