SwiftUI 从字符串解码图像(Base64)

Ice*_*Ice 3 base64 image decoding swift swiftui

我在字符串(基数 64)中有一个图像,如何使用 SwiftUI 为 Image() 解码该字符串。

知道我正在使用这种格式:

Image(imageFromAppGroup(key: "image0")).resizable().frame(width: 70, height: 70)
                            .cornerRadius(10)
                            .background(Color(red: 0.218, green: 0.215, blue: 0.25))
Run Code Online (Sandbox Code Playgroud)

我需要过去的 64 位图像而不是“image0”。我怎样才能做到这一点?

Geo*_*e_E 9

您可以UIImage为此使用:

let str = "IMAGE"
Image(uiImage: UIImage(data: Data(base64Encoded: str)!)!)
Run Code Online (Sandbox Code Playgroud)

您不想在!这里强制展开,所以您也应该处理它:

let str = "IMAGE"

if let data = Data(base64Encoded: str), let uiImage = UIImage(data: data) {
    Image(uiImage: uiImage)
} else {
    let _ = print("FAIL")
}
Run Code Online (Sandbox Code Playgroud)

您还可以创建一个Image扩展:

extension Image {
    init?(base64String: String) {
        guard let data = Data(base64Encoded: base64String) else { return nil }
        guard let uiImage = UIImage(data: data) else { return nil }
        self = Image(uiImage: uiImage)
    }
}

/* ... */

var body: some View {
    Image(base64String: str)
}
Run Code Online (Sandbox Code Playgroud)