2016-03-23 30 views
1

私はAlamofireを使ってファイルをアップロードしています。 UIImage [JPEG | PNG] Representation()ではjpegとpngの画像を扱えますが、アニメーションgifファイルをNSDataに変換するにはどうすればいいですか?Swift Library:AlamofireのアニメーションGIF UIImageをNSDataに変換するには?

私はAnimatedGIFImageSerializationを試しましたが、古くて動作しません。 AlamofireのアニメーションGIF UIImageをNSDataに変換するには?

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

は、あなたがこの記事をチェックアウトすることがあります。 http://stackoverflow.com/questions/16748355/convert-gif-image-to-nsdata – TangZijian

答えて

0

キーは、最初にファイルからUIImageを作成しないことです。

UIImage(named: "loading2.gif") 

ファイルを画面に表示できる形式にデコードしています。また、UIImageはGIFの1つのフレームしか表現できません。 JPEGの場合でも、動作するように見えますが、すべてのメタデータが失われており、再エンコードによって品質が低下する可能性があります。言うまでもなく、ファイルを直接送信するよりも、デコードや再エンコードに時間がかかります。

代わりにそれを行うの、ちょうどここの指示に従うことによって、NSDataオブジェクトに直接ファイルの内容を読み込む:

Convert Gif image to NSData

関連する問題