Base64 字符串转 UIImage 问题

Base64 string to UIImage Issue

免责声明:这里有很多关于 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

你的 Base64 字符串

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

包含“percent-encoded个十六进制序列”, 例如“/”为“%2F”,“+”为“%2B”。

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

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