簡體   English   中英

Objective-C Base64編碼

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM