2017-10-06 140 views
0

我得到帶擴展名的base64字符串,我想將base64字符串轉換爲GIF並在ImageView中顯示它。我正在使用iOSDevCenters + GIF.swift文件。我從字符串得到的NSData但在圖像數據時轉換,它給人nil.Below是我的代碼:如何在swift中從base64字符串創建GIF

let imageData = profileImageString.data(using: .utf8) 
self.thumbnailMedia.image = UIImage.gifImageWithData(imageData!) 

有誰知道如何做到這一點任何想法?

+0

您是否獲得一個JSON API中的字符串或者是你得到只是GIF數據? –

回答

0

如果您從base64字符串開始,則應將其解碼爲base64字符串,而不是UTF8

if let data = Data(base64Encoded: imageDataString) { 
    let image = UIImage(data: data) 
} 

這個片段簡單地取編碼圖像串,解碼成Data對象,並創建從所述數據的圖像。
如果您使用base64字符串工作了很多,我強烈建議您擴展String結構功能。

extension String { 
    //: ### Base64 encoding a string 
    func base64Encoded() -> String? { 
     if let data = self.data(using: .utf8) { 
      return data.base64EncodedString() 
     } 
     return nil 
    } 

    //: ### Base64 decoding a string 
    func base64Decoded() -> String? { 
     if let data = Data(base64Encoded: self) { 
      return String(data: data, encoding: .utf8) 
     } 
     return nil 
    } 
} 

這個片斷是從Github,學分斯金格拍攝。

另外一種方法是使用由Leo Dabus,符合斯威夫特約定創建的extension

extension String { 
    var data:   Data { return Data(utf8) } 
    var base64Encoded: Data { return data.base64EncodedData() } 
    var base64Decoded: Data? { return Data(base64Encoded: self) } 
} 

extension Data { 
    var string: String? { return String(data: self, encoding: .utf8) } 
} 
+0

將字符串轉換爲utf8數據時不需要展開數據。它永遠不會失敗 –

+1

您可以使用'Data(.utf8).base64EncodedString()'並從返回類型中除去可選 –

+0

您的方法也沒有任何參數,因此您應該使它們的計算屬性檢查https:// stackoverflow.com/questions/29365145/how-to-encode-string-to-base64-in-swift/43817935#43817935 –

相關問題