2016-06-27 123 views
0
NSString *base64String = [UIImagePNGRepresentation(myimage) base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength]; 

我試圖將uiimage轉換爲base64字符串。但我認爲它給出了錯誤的結果。它給出了這樣的字符串:Objective-C Base64編碼

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

但是,這是一個空的圖像。哪裏不對?

+0

你可以檢查你的版本,並檢查這將有助於你http://stackoverflow.com/questions/11251340/convert-between-uiimage-and-base64-string –

+0

這是相同的地雷。 – user

+0

你使用的是什麼版本 –

回答

0

變化:

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

到:

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

類型的編碼:

NSDataBase64Encoding64CharacterLineLength  
    NSDataBase64Encoding76CharacterLineLength  
    NSDataBase64EncodingEndLineWithCarriageReturn  
    NSDataBase64EncodingEndLineWithLineFeed 

類型解碼的:

NSDataBase64DecodingIgnoreUnknownCharacters 

您正在使用解碼類型,同時編碼圖像

+0

請添加一個解釋爲什麼這解決了這個問題。 – Avi

+0

是的,我已經更新了我的答案 – KDeogharkar

+0

我嘗試了所有的編碼類型,但沒有奏效。它給出了相同的結果。 – user

0

在發佈數據中,您的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:@" "]; 

希望這會幫助你。任何一種類型實現編碼字符串

0

通常當我們將圖像轉換成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]; 
0

我曾一個方法中,你只需要傳遞的UIImage,它會返回一個base64字符串。

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