2014-03-30 153 views
0

我已經看過類似的問題,但仍然沒有將Base64編碼的字符串正確地轉換爲UIImage。我使用http://www.freeformatter.com/base64-encoder.html來測試我的字符串,並可以成功獲取圖像作爲迴應。將Base64字符串轉換爲UIImage

但是,當我使用initWithBase64EncodedString時,我得到一個無響應。下面是我正在使用的代碼以及我用來測試的Base64字符串的一個示例。我在這裏錯過了什麼?

代碼:

imageData = [[NSData alloc] initWithBase64EncodedString:checkBytesString options:0]; checkImage = [UIImage imageWithData:imageData];

字符串(這是相當大的,所以我通過OneDrive分享吧):

https://onedrive.live.com/redir?resid=60AA391B8FEA9C36!107&authkey=!AFK_y5UHOFsdYsKZI&ithint=file%2c.rtf

回答

2

答案是使用外部庫,NSData + Base64。它實現了方法dataFromBase64String,該方法正確返回了imageData,因此可以將其轉換爲圖像。

https://github.com/l4u/NSData-Base64

imageData = [NSData dataFromBase64String:frontCheckBytesString]; 
checkImage = [UIImage imageWithData:imageData]; 
+0

您的代碼表示dataFromBase64String沒有已知的方法簡單。 – Muju

+0

@Muju我的答案是使用外部庫,我更新包括鏈接。 – bmjohns

+0

對不起,我還沒有看到你的整個答案。你的答案解決了我的問題。非常感謝你。 – Muju

1

在IOS 7起

- (UIImage *)decodeBase64ToImage:(NSString *)strEncodeData 
{ 
    NSData *data = [[NSData alloc]initWithBase64EncodedString:strEncodeData options:NSDataBase64DecodingIgnoreUnknownCharacters]; 
    return [UIImage imageWithData:data]; 
} 

UIImage *zeroImage = [[UIImage alloc]init]; 
if(![strb64Image isEqualToString:@""] && strb64Image) 
{ 
    zeroImage = [self decodeBase64ToImage:strB64Image]; 
}