Base64字符串转换为UIImage

时间:2018-10-06 00:05:31

标签: swift base64

我正在尝试在Swift中将base64字符串解码为UIImage。

我的示例图像的编码字符串开头为:

  

data:image / jpeg; base64,/ 9j / 2wBDAAYEBQYFBAYGBQYHBwYIChAKC ...

完整的编码字符串可以在以下位置查看:base64 string

我使用以下功能将其解码为图像:

func ConvertBase64StringToImage (imageBase64String:String) -> UIImage {
    let imageData = Data.init(base64Encoded: imageBase64String, options: .init(rawValue: 0))
    let image = UIImage(data: imageData!)
    return image!
}

如果我使用上面的字符串作为参数调用该函数,则会发生错误,指出imageData为nil(致命错误:在展开可选值时意外发现nil)。

我在这里做什么错了?

1 个答案:

答案 0 :(得分:5)

这不是普通的base64编码的字符串。这是一个以data:image/jpeg;base64开头的数据URL。

您想要类似的东西

func ConvertBase64StringToImage (imageBase64String:String) -> UIImage? {
    if let url = URL(string: imageBase64String) {
        do {
            let imageData = try Data(contentsOf: url)
            let image = UIImage(data: imageData)
            return image
        } catch {
            print(error)
        }
    }

    return nil
}

请注意,您应该使它返回一个可选图像以处理错误。

如果除了“标准” base64编码的字符串之外还需要处理这些类型的字符串,可以查看imageBase64String是否具有前缀data:并采取相应措施。