You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI中不使用UIImage如何将base64图片字符串转为Image可加载格式

解决方案

SwiftUI 从 iOS 16/macOS 13 开始提供了原生的 Image(data:) 初始化方法,不需要借助 UIImage 即可直接从图片二进制数据生成 Image 实例,对应你的需求只需要先把base64字符串转为Data即可。

注意事项

  • 首先要判断base64字符串是否带 data:image/xxx;base64, 这类MIME前缀,如果有的话需要先剔除前缀再做转换
  • 部分base64字符串会携带换行、空格等无效字符,转换前需要先清理避免转换失败
  • 要增加容错处理,避免base64非法时页面崩溃

完整实现代码

import SwiftUI

struct ContentView: View
{   
    @State var img_base64:String = "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBD [...]"
    
    var body: some View
    {        
        if let imageData = Data(base64Encoded: cleanBase64String(img_base64)),
           let image = Image(data: imageData) {
            image
                .resizable()
                .scaledToFit()
        } else {
            // 加载失败占位图,可根据需求修改
            Image(systemName: "photo.badge.exclamationmark")
        }
    }
    
    // 清理base64字符串的工具方法
    private func cleanBase64String(_ rawStr: String) -> String {
        // 去除换行、空格、回车等无效字符
        var cleanStr = rawStr.replacingOccurrences(of: "\n", with: "")
            .replacingOccurrences(of: "\r", with: "")
            .replacingOccurrences(of: " ", with: "")
        // 剔除MIME前缀
        if cleanStr.contains("base64,") {
            cleanStr = cleanStr.components(separatedBy: "base64,").last ?? cleanStr
        }
        return cleanStr
    }
}

如果你的应用需要兼容 iOS 15 及更低版本,SwiftUI 原生没有提供 Image(data:) 方法,此时如果严格要求不能使用 UIImage 没有原生方案可选,建议提升应用最低支持版本到 iOS 16。

内容的提问来源于stack exchange,提问作者user2926577

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 10:36:02