我正在尝试在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)。
我在这里做什么错了?
答案 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:
并采取相应措施。