SwiftUI 从 String(Base64) 解码图像
SwiftUI decoding image from String(Base64)
我在字符串中有一个图像(base 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))
我需要过去的 base 64 图像而不是“image0”。我该怎么做?
您可以为此使用 UIImage
:
let str = "IMAGE"
Image(uiImage: UIImage(data: Data(base64Encoded: str)!)!)
你不会想在这里用 !
强制解包,所以你也应该处理它:
let str = "IMAGE"
if let data = Data(base64Encoded: str), let uiImage = UIImage(data: data) {
Image(uiImage: uiImage)
} else {
let _ = print("FAIL")
}
您还可以创建一个 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)
}
像这样:
extension Image {
init?(base64String: String) {
guard let data = Data(base64Encoded: base64String) else { return nil }
#if os(macOS)
guard let image = NSImage(data: data) else { return nil }
self.init(nsImage: image)
#elseif os(iOS)
guard let image = UIImage(data: data) else { return nil }
self.init(uiImage: image)
#else
return nil
#endif
}
}
用法:
Image(base64String: base64string)
我在字符串中有一个图像(base 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))
我需要过去的 base 64 图像而不是“image0”。我该怎么做?
您可以为此使用 UIImage
:
let str = "IMAGE"
Image(uiImage: UIImage(data: Data(base64Encoded: str)!)!)
你不会想在这里用 !
强制解包,所以你也应该处理它:
let str = "IMAGE"
if let data = Data(base64Encoded: str), let uiImage = UIImage(data: data) {
Image(uiImage: uiImage)
} else {
let _ = print("FAIL")
}
您还可以创建一个 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)
}
像这样:
extension Image {
init?(base64String: String) {
guard let data = Data(base64Encoded: base64String) else { return nil }
#if os(macOS)
guard let image = NSImage(data: data) else { return nil }
self.init(nsImage: image)
#elseif os(iOS)
guard let image = UIImage(data: data) else { return nil }
self.init(uiImage: image)
#else
return nil
#endif
}
}
用法:
Image(base64String: base64string)