swift - Base64 字符串转 UIImage

标签 swift base64

我正在尝试在 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/

相关文章:

ios - 如何在标签栏 View Controller 中显示后退按钮?

ios - 在 Swift 2 中解析 JSON 字符串

java - 我的 base64 编码的 byte[] 流在通过 http 响应发送后有额外的字符

html - 使用base64将 Canvas 图像从一个 Canvas 显示到另一个 Canvas

javascript - 如何将base64 svg字符串设置为图像标签src?

c# - 生成基础64 ID

ios - 有没有办法在 Xcode 11 中使用 iOS 14 SDK?

xcode - 数字的 Swift 算术和比较运算符重载列表?

ios - UIScrollView 滚动不起作用,内部按钮不起作用

Java 等效于 Convert.FromBase64String 方法