在将base64转化为图片过程中,遇到一个现象。Swift校验字符串不通过,字符串转为data时,一直报nil,但是将字符串放在校验网站,安卓那边可以校验成功。
经过多方检查,原来是base64生成后,是数据传回时,字符串末尾存在丢失符号问题。解决办法,数据末尾添加==符号
591533446995_.pic_hd.jpg附校验base64String的网址: http://imgbase64.duoshitong.com/
实现代码
//转换数据
//let imageData = try? Data(contentsOf: NSURL(string: self.tempImgStr)! as URL) //备用方法
let base64String = self.tempImgStr.replacingOccurrences(of: "data:image/png;base64,", with: "")
//转换尝试判断,有可能返回的数据丢失"==",如果丢失,swift校验不通过
var imageData = Data(base64Encoded: base64String, options: .ignoreUnknownCharacters)
if imageData == nil {
imageData = Data(base64Encoded: base64String + "==", options: .ignoreUnknownCharacters) //如果数据不正确,添加"=="重试
}
var image:UIImage?
if imageData != nil {
image = UIImage(data: imageData!) //转换内容
} else {
image = self.tempImage
}
if image != nil {
//将数据存储到相册
UIImageWriteToSavedPhotosAlbum(image!, self, #selector(self.saveImage(image:didFinishSavingWithError:contextInfo:)), nil)
//发送反馈消息,发送执行结果回调信息
//let dic = ["code": 1, "msg":"", "data":[]] as [String : Any]
//callback?(dic)
}
网友评论