在swift中将UIImage转换为base64字符串

时间:2016-11-03 07:39:08

标签: ios swift uiimage base64 uiimagepngrepresentation

我正在尝试将UIImage转换为base64字符串,目标是将其上传到后端服务器。

但是,我在本文中找到的转换代码(应该是Apple自己的实现)会生成无效的字符串:

Convert between UIImage and Base64 string

上传后,我收到了这张图片:

[从iOS转换后的base64 1

解码的失败图像

而不是:

[从在线base64转换工具2

解码的正确图像

我使用Postman测试了上传结果,并且后端正确处理了有效的base64图像,因此我将错误缩小到base64转换本身。这是我的代码:

public extension UIImage
{
     func base64Encode() -> String?
    {
        guard let imageData = UIImagePNGRepresentation(self) else
        {
            return nil
        }

        let base64String = imageData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.Encoding64CharacterLineLength)
        let fullBase64String = "data:image/png;base64,\(base64String))"

        return fullBase64String
    }
}

在上传到服务器之前,我知道如何在我的iOS设备上修复base64输出吗?

2 个答案:

答案 0 :(得分:4)

做到这样的事情:

对于编码:

data.base64EncodedStringWithOptions([])

用于解码:

let url = URL(string: String(format:"data:application/octet-stream;base64,%@",base64String))
do {
    let data =  try Data(contentsOf: url!)
}catch {

}

答案 1 :(得分:1)

对于Swift 4, 做这样的事情,

用于编码 -

let imgObj = UIImage(named: "photo")    
let imageData = UIImagePNGRepresentation(imgObj!)! as NSData
let base64 = imageData.base64EncodedData(options: .lineLength64Characters)

base64变量的数据类型是Data。