2016-12-05 17 views
6

यह कोड अब स्विफ्ट 3 के साथ काम नहीं कर रहा है।छवि को बेस 64 डेटा डीकोड करें

imageData = NSData(base64EncodedString: mediaFile, options: NSDataBase64DecodingOptions.fromRaw(0)!) 

तो यह एक है।

imageData = NSData(base64EncodedString: mediaFile, options: .allZeros) 
+1

स्विफ्ट 3 आपको NSData के बजाय डेटा का उपयोग करना चाहिए। –

+0

'यदि जाने imageData = डेटा (base64Encoded: base64EncodedImageString, विकल्प: .ignoreUnknownCharacters), देना छवि = UIImage (डेटा: imageData) { प्रिंट (image.size) } ' –

+0

MediaFile बेस 64 एन्कोड किए गए वर्ण से मिलकर एक स्ट्रिंग है –

उत्तर

12

में मदद मिलेगी की तरह लिख सकते हैं।

if let decodedData = Data(base64Encoded: mediaFile, options: .ignoreUnknownCharacters) { 
    let image = UIImage(data: decodedData) 
} 
1

आप इस तरह से

let data = NSData(base64Encoded: mediaFile, options: NSData.Base64DecodingOptions(rawValue: 0)) 

आशा है कि यह आप के बजाय सीधे स्विफ्ट 3 देशी DataNSData उपयोग का उपयोग करने का

4

स्विफ्ट

स्विफ्ट 3.0 किसी भी अधिक एन एस का उपयोग करने की सिफारिश नहीं करता और NSData के साथ एक ही मामले के रूप में अच्छी तरह से

if let decodedImageData = Data(base64Encoded: mediaFile, options: .ignoreUnknownCharacters) { 
     let image = UIImage(data: decodedImageData) 
    } 

में ऑब्जेक्टिव-सी

NSURL *url = [NSURL URLWithString:base64String];  
NSData *decodedImageData = [NSData dataWithContentsOfURL:url]; 
UIImage *image = [UIImage imageWithData:decodedImageData]; 
2

मैं 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() 
    } 
} 
2

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() 
     } 
    } 
} 
+0

केवल कामकाजी समाधान। इसके लिए धन्यवाद! – LinusGeffarth

संबंधित मुद्दे