【问题标题】:how to create GIF from base64 string in swift如何在swift中从base64字符串创建GIF
【发布时间】:2018-03-17 21:07:59
【问题描述】:

我正在获取带有扩展名的 base64 字符串,我想将 base64 字符串转换为 GIF 并在 ImageView 中显示。我正在使用 iOSDevCenters+GIF.swift 文件。我从字符串中获取 NSData,但是当数据转换为图像时,它给出 nil。下面是我的代码:

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

有人对如何做到这一点有任何想法吗?

【问题讨论】:

  • 您是在 json api 中获取字符串还是仅获取 gif 数据?

标签: ios swift uiimageview base64 animated-gif


【解决方案1】:

如果您从 base64 字符串开始,则应将其解码为 base64 字符串而不是 UTF8

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

这个 sn-p 只是获取编码图像字符串,解码为 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
    }
}

这个 sn-p 取自 Github,归功于 Stringer。

另外一种方法是使用由 Leo Dabus 创建的符合 Swift 约定的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) }
}

【讨论】:

  • 在将字符串转换为 utf8 数据时无需解包数据。它永远不会失败
  • 您可以只使用Data(.utf8).base64EncodedString() 并从返回类型中删除可选
  • 你的方法也没有任何参数,所以你应该让它们计算属性检查这个stackoverflow.com/questions/29365145/…
  • 不知道,但你能澄清一下,方法 data(using:) 似乎返回一个可选的。我在操场上使用它们,它们似乎可以工作。
  • Swift 中的所有字符串都是 unicode (utf8)。所以你没有转换任何东西。它永远不会失败
猜你喜欢
  • 2015-04-26
  • 1970-01-01
  • 1970-01-01
  • 2014-08-19
  • 2019-01-13
  • 1970-01-01
  • 2014-05-06
相关资源
最近更新 更多