我正在尝试在 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( fatal error :在展开可选值时意外发现 nil)。
我在这里做错了什么?
最佳答案
这不是普通的 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:
并采取行动相应地。
关于swift - Base64 字符串转 UIImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52674591/