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

如何将MySQL中Blob存储的base64图片数据转换为Swift可用的UIImage

编辑2

对于所有遇到这个问题的开发者,我找到了一个可行的临时解决方法。我暂时不确定具体原因(所以我没有将其作为正式答案发布),如果有人了解原因欢迎补充,我也很乐意学习,以下是我找到的解决方案:

从服务端获取到responseData后,我先通过如下方法将其转换为字符串:

let string = String(data: responseData, encoding: .utf8)!

(我为了方便测试在此处做了强制解包,正式版本中我会使用可选绑定处理)

之后我再通过Swift自带的方法将字符串重新转换为Data:

let data = Data(base64Encoded: string)

将转换后的data传入UIImage即可正常生成图片,运行完全正常!

我猜测是PHP和Swift的编码方式存在差异?或是Swift需要对这类数据做额外处理?不管原因是什么,这个方法是可行的,希望能帮到其他遇到相同问题的人!


原始问题

我有一张图片以Blob格式存储在MySQL服务器中,图片上传时我通过PHP的base64_encode()函数做了base64编码。

编码后会生成类似如下的长字符串(编辑:完整字符串约20万字节):

iVBORw0KGgoAAAANSUhEUgAABAAAAAQACAYAAAB/HSuDAAAAAXNSR0IArs4c6QAAAMZlWElmTU0AKgAAAAgABgESAAMAAAABAAEAAAEaAAUAAAABAAAAVgEbAAUAAAABAAAAXgEoAAMAAAABAAIAAAExAAIAAAAVAAAAZodpAAQAAAABAAAAfAAAAAAAAABIAAAAAQAAAEgAAAABUGl4ZWxtYXRvciBQcm8gMi4xLjIAAAAEkAQAAgAAABQAAACyoAEAAwAAAAEAAQAAoAIABAAAAAEAAAQAoAMABAAAAAEAAAQAAAAAADIwMjE6MDM6MDQgMTQ6NDk6MjQAYZVljgAAAAlwSFlzAAALEwAACxMBAJqcGAAAA6ppVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDYuMC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtb...

我在Swift中使用常规网络请求获取服务端返回的数据,代码如下:

func getImages(iD: Int, completed: @escaping (Result<Data, Error>) -> Void) {
    let urlString = "https://example.com/getImages.php?id=\(iD)"
    
    guard let url = URL(string: urlString) else {
        completed(.failure(ErrorMessages.urlError))
        return
    }
    
    let task = URLSession.shared.dataTask(with: url) { data, response, error in
        
        if let _ = error {
            completed(.failure(ErrorMessages.networkingError))
        }
        
        guard let data = data else {
            completed(.failure(ErrorMessages.dataError))
            return
        }
        
        completed(.success(data))
        
    }
    
    task.resume()
}

但我尝试使用UIImage(data: responseData)创建图片时,页面仅显示空白。我还尝试过调用.base64EncodedData()处理数据,依旧无效。

请问我哪里操作有误导致图片显示空白?我是否需要调整编码处理逻辑?


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:15:05