将base64数据解码为图像
问题描述:
此代码不再适用于Swift 3。将base64数据解码为图像
imageData = NSData(base64EncodedString: mediaFile, options: NSDataBase64DecodingOptions.fromRaw(0)!)
这是一个。
imageData = NSData(base64EncodedString: mediaFile, options: .allZeros)
答
而不是使用NSData
直接使用斯威夫特3原生Data
的。
if let decodedData = Data(base64Encoded: mediaFile, options: .ignoreUnknownCharacters) {
let image = UIImage(data: decodedData)
}
答
你可以写这样的方式
let data = NSData(base64Encoded: mediaFile, options: NSData.Base64DecodingOptions(rawValue: 0))
希望它会帮助你
答
夫特
夫特3.0不推荐使用NS任何更多,并与NSData
相同情况下,也
if let decodedImageData = Data(base64Encoded: mediaFile, options: .ignoreUnknownCharacters) {
let image = UIImage(data: decodedImageData)
}
在Objective-C
NSURL *url = [NSURL URLWithString:base64String];
NSData *decodedImageData = [NSData dataWithContentsOfURL:url];
UIImage *image = [UIImage imageWithData:decodedImageData];
答
我实现这个作为的UIImage扩展
extension UIImage {
/*
@brief decode image base64
*/
static func decodeBase64(toImage strEncodeData: String!) -> UIImage {
if let decData = Data(base64Encoded: strEncodeData, options: .ignoreUnknownCharacters), strEncodeData.characters.count > 0 {
return UIImage(data: decData)!
}
return UIImage()
}
}
答
swift4:
有时,字符串中有作为data:image/png;base64,
前缀,这将使得base64Encoded
回报nil
:
extension String {
func base64ToImage() -> UIImage? {
if let url = URL(string: self),let data = try? Data(contentsOf: url),let image = UIImage(data: data) {
return image
}
return nil
}
}
全码:
extension String {
func matches(for regex: String) -> [String] {
do {
let regex = try NSRegularExpression(pattern: regex)
let results = regex.matches(in: self, range: NSRange(self.startIndex..., in: self))
return results.map {
self.substring(with: Range($0.range, in: self)!)
}
} catch let error {
print("invalid regex: \(error.localizedDescription)")
return []
}
}
}
let result = text.matches(for: "data:image\\/([a-zA-Z]*);base64,([^\\\"]*)")
for imageString in result {
autoreleasepool {
let image = imageString.base64ToImage()
}
}
}
+0
只能工作的解决方案。感谢你! – LinusGeffarth
Swift 3你应该使用数据而不是NSData。 –
'如果让的imageData =数据(base64Encoded:base64EncodedImageString,选择:.ignoreUnknownCharacters) 设图像= UIImage的(数据:为imageData){ 打印(image.size) } ' –
媒体文件是由base64编码字符的字符串 –