2016-03-23 14 views
1

Ich verwende Alamofire, um Dateien hochzuladen. Es ist in Ordnung, JPEG- und PNG-Bilder mit UIImage [JPEG | PNG] Representation() zu verarbeiten, aber wie konvertiert man animierte GIF-Dateien in NSData?Swift Library: Wie konvertiert man animierte Gif UIImage in NSData für Alamofire?

Ich versuchte AnimatedGIFImageSerialization, aber es ist so alt und funktioniert nicht. Wie konvertiert man animierte Gif UIImage in NSData für Alamofire?

func uploadFile() { 
    if let fileURL = NSBundle.mainBundle().URLForResource("AarioAi", withExtension: "jpeg"){ 
     var imageData : NSData? = nil 
     if let image = UIImage(named: "loading2.gif") { 
      let filetype = "gif" 
      switch filetype { 
      case "jpeg", "jpg": 
       imageData = UIImageJPEGRepresentation(image, 1.0) 
      case "gif": 
       imageData = UIImagePNGRepresentation(image) 
      case "png": 
       imageData = UIImagePNGRepresentation(image) 
      default: 
       imageData = UIImagePNGRepresentation(image) 
      } 
     } 

    Alamofire.upload(.POST, Conf.URL.uploadFile, multipartFormData: { 
     // POST file[]=xxxx&&file[]=xxxxx 
     multipartFormData in 
     multipartFormData.appendBodyPart(fileURL: fileURL, name: "file[]") 
     multipartFormData.appendBodyPart(data: imageData!, name: "file[]", fileName: "loading2.gif", mimeType: "image/gif") 

     }, 
     encodingCompletion: { 
      encodingResult in 
      switch encodingResult { 
      case .Success(let upload, _, _): 
       upload.responseJSON { response in 
        debugPrint(response) 
       } 
      case .Failure(let encodingError): 
       print(encodingError) 
      } 
    }) 
    } 
} 
+0

Sie diesen Beitrag Check-out. http://stackoverflow.com/questions/16748355/convert-gif-image-to-nsdata – TangZijian

Antwort

0

Der Schlüssel besteht darin, an keiner Stelle ein UIImage aus einer Datei zu machen. Wenn Sie schreiben Code wie folgt:

UIImage(named: "loading2.gif") 

Sie entschlüsseln die Datei in ein Format, das auf dem Bildschirm angezeigt werden können. Außerdem kann ein UIImage nur einen einzelnen Frame des GIF darstellen. Selbst für JPEGs, bei denen es so aussieht, als ob es funktioniert, verlieren Sie alle Metadaten und verlieren wahrscheinlich durch das erneute Kodieren an Qualität. Ganz zu schweigen, es ist viel langsamer zu dekodieren und neu zu kodieren, als die Datei direkt zu senden.

Statt das zu tun, laden Sie einfach den Inhalt der Datei direkt in ein NSData Objekt indem Sie die Anweisungen hier:

Convert Gif image to NSData