如何在Swift中从Base64编码的字符串创建图像?

10
一个Web服务会将Base64编码的图像作为字符串进行回传。如何在Swift项目中解码并显示这个编码后的图像?
具体来说,我想要使用已经以Base64格式作为字符串提供的图像,并了解如何在UIImageView中显示它。
我目前找到的文章都描述了过时的技术或是用Objective-C编写的,而我不熟悉Objective-C。那么如何将Base64编码后的字符串转换为UIImage呢?
2个回答

33
将您的 base64 编码字符串转换为 NSData 实例,可以通过执行以下操作完成:
let encodedImageData = ... get string from your web service ...
let imageData = NSData(base64EncodedString: encodedImageData options: .allZeros)

将imageData转换为UIImage:

let image = UIImage(data: imageData)

你可以将图像设置在一个UIImageView上:

imageView.image = image

3
在 Swift 2 中,使用以下代码将编码后的图片数据转换成 NSData 类型的对象:let imageData = NSData(base64EncodedString: encodedImageData, options: [])请注意,此代码将根据 base64 编码字符串创建一个 NSData 对象,并将其赋值给变量 imageData。在这里,options 参数为空数组,表示不使用任何选项。 - Photon Point
1
NSData的参数之间缺少逗号。 - Rags93
7
在Swift 3/4中,它是Data(base64Encoded: encodedImageData) - Tyress

3

要将 Base64 编码的字符串解码为图像,您可以在 Swift 中使用以下代码:

let decodedData = NSData(base64EncodedString: base64String, options: NSDataBase64DecodingOptions.fromRaw(0)!)
var decodedimage = UIImage(data: decodedData)
println(decodedimage)
yourImageView.image = decodedimage as UIImage

更好的是,在将解码后的图像分配给图像视图之前,您可以检查decodedimage是否为nil

1
这不起作用... decodedimage 总是 nil。 - Solid Soft

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接