2016-03-23 16 views
1

Dosyaları yüklemek için Alamofire kullanıyorum. UIImage [JPEG | PNG] Temsilciliği() ile jpeg ve png görüntüleri işlemek tamamdır, ancak animasyonlu gif dosyalarını NSData'ya nasıl dönüştürebilirim?Swift Library: Animasyonlu Gif UIImage'ı Alamofire için NSData'ya nasıl dönüştürebilirim?

AnimatedGIFImageSerialization'u denedim ancak çok eski ve çalışmıyor. Nasıl animasyonlu Gif UIImage NSData for Alamofire dönüştürebilirsiniz?

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

Bu yayını kontrol edilebilir. http://stackoverflow.com/questions/16748355/convert-gif-image-to-nsdata – TangZijian

cevap

0

Anahtar, bir dosyadan ilk UIImage yapmamaktır. Böyle bir kod yazarken:

UIImage(named: "loading2.gif") 

Ekranda gösterilen edilebilen bir biçime dosyayı deşifre edilir. Ayrıca, bir UIImage yalnızca GIF'in tek bir karesini temsil edebilir. JPEG'ler için bile çalıştığı gibi görünüyorsa, meta verilerinin tümünü kaybediyorsunuz ve muhtemelen yeniden kodlayarak kaliteyi kaybediyorsunuz. Bahsetmemek gerekirse, dosyayı doğrudan göndermekten çok daha yavaş çözülecek ve yeniden kodlanacaktır.

Bunun yerine yapmanın, sadece burada talimatları uygulayarak bir NSData nesnesine doğrudan dosya içeriğini yüklemek:

Convert Gif image to NSData

İlgili konular