Base64字符串到UIImage问题

时间:2017-11-08 14:23:15

标签: swift uiimage base64 decode decoding

免责声明:SO上有很多问题在这里提出同样的问题。我试图直接关注这些问题的解决方案但没有成功。我试图避免发布这个副本。

您好,

我在将一个base64编码的字符串解码为Swift中的图像时遇到问题。我尝试过一些不同的数据集,但它们似乎都没有正确解码,因为结果总是nil

经过相当多的研究后,我得出结论,需要将字符串解码为Data,从该数据创建图像并为其设置UIImageView的图像。很简单,对吧?

let base64String: String = ...
let decodedData: Data = Data(base64Encoded: base64String, options: [])
let decodedImage: UIImage = UIImage(data: decodedData)
myImageView.image = decodedImage

然而,经过我的各种尝试后,数据最终都是nil,我无法创建图像。

我感觉它可能是我正在使用的数据,但在线转换工具似乎没有使用它的问题。请参阅下面的我的数据样本和我用于转换的网站。

String example / Online converter / Actual image

1 个答案:

答案 0 :(得分:2)

您的Base64字符串

%2F9j%2F4AAQSk...Z2uHi4%2BTl5ufo6...jtTGf%2FZ

包含" percent-encoded十六进制序列", 例如"%2F" for" /",或"%2B" for" +"。

这是URL applications中使用的变体,但Data不会自动处理它。因此你必须删除 百分比编码首先:

if let percentDecoded = base64String.removingPercentEncoding,
    let decodedData = Data(base64Encoded: percentDecoded) {
    // ...
}