이 코드는 스위프트 3에서 더 이상 작동하지 않습니다.base64 데이터를 이미지로 디코딩
imageData = NSData(base64EncodedString: mediaFile, options: NSDataBase64DecodingOptions.fromRaw(0)!)
그래서 이것은 하나입니다.
imageData = NSData(base64EncodedString: mediaFile, options: .allZeros)
이 코드는 스위프트 3에서 더 이상 작동하지 않습니다.base64 데이터를 이미지로 디코딩
imageData = NSData(base64EncodedString: mediaFile, options: NSDataBase64DecodingOptions.fromRaw(0)!)
그래서 이것은 하나입니다.
imageData = NSData(base64EncodedString: mediaFile, options: .allZeros)
도움이 될 것입니다 희망이 방법처럼 쓸 수 있습니다.
if let decodedData = Data(base64Encoded: mediaFile, options: .ignoreUnknownCharacters) {
let image = UIImage(data: decodedData)
}
당신은
let data = NSData(base64Encoded: mediaFile, options: NSData.Base64DecodingOptions(rawValue: 0))
그것을 대신 3 네이티브
Data
직접 스위프트
NSData
사용을 사용하는 당신에게
스위프트
3.0 더 NS의 사용을 권유하지 스위프트뿐만 NSData
와 동일한 경우
if let decodedImageData = Data(base64Encoded: mediaFile, options: .ignoreUnknownCharacters) {
let image = UIImage(data: decodedImageData)
}
오브젝티브 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 :
때때로, 문자열 base64Encoded
반환 nil
것 data:image/png;base64,
같은 접두사가 있습니다
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()
}
}
}
해결 방법. 고마워! – LinusGeffarth
Swift 3 당신은 NSData 대신에 Data를 사용해야합니다. –
'경우 imageData의 = 데이터 보자 (base64Encoded : base64EncodedImageString, 옵션 : .ignoreUnknownCharacters), 하자 이미지 =있는 UIImage (자료 : imageData의) { 인쇄 (image.size) 가} ' –
미디어 파일은 base64로 인코딩 된 문자로 구성된 문자열입니다 –