将Swift中的字符串Base64转换为UIImage

3

我正在尝试使用以下代码将base 64编码的字符串转换为UIImage

let decodedData = NSData(base64EncodedString: base64String!, options: NSDataBase64DecodingOptions(rawValue: 0) )

print(decodedData) //I get data here (It is not nil)

var decodedimage = UIImage(data: decodedData!) //return nil

decodedData看起来没问题,但为什么转换成UIImage时会得到nil


我在我的问题中犯了一个错误: - Eyal
1
如果decodedData!= nil但decodedimage == nil,则数据不是有效的图像格式。 - Martin R
嗨,你说得对!在base64字符串的开头有额外的字符。谢谢! - Eyal
2个回答

7

尝试不传递任何选项,我也建议在可选项上使用unwrap:

if let string = base64String {
    let decodedData = NSData(base64EncodedString: base64String!, options: []) 
    if let data = decodedData {
        var decodedimage = UIImage(data: data)
    } else {
        print("error with decodedData")
    }
} else {
    print("error with base64String")
}

嗨,谢谢,我会尝试的。 - Eyal
很抱歉,它没有解决我的问题。程序在代码中没有打印出任何两个print语句。这意味着数据不是空的。由于某种原因,代码拒绝将'data'转换为UIImage,并在这一步返回nil。 - Eyal
可能是您检索的数据出现了问题。 - Damien
是的,你说得对。正如我上面提到的,Base64字符串开头有几个字符。在我删除它们之后,数据就可以转换为UIImage了。 - Eyal

1
对于 Swift 4.2
if base64String != nil {
        let decodedData = NSData(base64Encoded: base64String!, options: [])
        if let data = decodedData {
            let decodedimage = UIImage(data: data as Data)
            cell.logo.image = decodedimage
        } else {
            print("error with decodedData")
        }
    } else {
        print("error with base64String")
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接