2017-10-06 70 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 –

相关问题