Как выбрать анимационное изображение из UIImagepicker и добавить его в UIimageview и загрузить его - PullRequest
0 голосов
/ 07 сентября 2018

В моей галерее есть изображения .gif, я хочу загрузить это изображение GIF с помощью Alamofire, я смог загрузить изображение .png, jpg, jpeg, но когда я пытаюсь загрузить изображение gif, оно загружается как обычное изображение .

Пожалуйста, найдите мой код

func imagePickerController(_ picker: UIImagePickerController,didFinishPickingMediaWithInfo info: [String : Any])
{

    let imageURL = info[UIImagePickerControllerReferenceURL] as! NSURL

    //userDefaultsObj.setValue("", forKey: "imageURL")
    let imageName = imageURL.lastPathComponent
    let imagenamearray = imageName?.components(separatedBy: ".")
    self.Imageextension = (imagenamearray?.last)!.lowercased()
    var chosenImage = info[UIImagePickerControllerEditedImage] as! UIImage

    var resizedImg = self.imageResizeFunction(resizeImage: chosenImage)


    let array1 = [UInt8](tmpImage!)
    print("Resized Value:\(array1.count/1024)")

    if (self.Imageextension == "gif")
    {
      selectedimgview.image = info[UIImagePickerControllerOriginalImage] as? UIImage
    }else
    {
    selectedimgview.image = resizedImg//chosenImage
    }
    selectedimgview.contentMode = .scaleToFill

    self.dismiss(animated: true, completion: nil)

}

загрузка кода с использованием Alamofire

 Alamofire.upload(multipartFormData: { (multipartFormData) in

        if imagepresent
        {
            if(imageextension == "jpg")
            {
                multipartFormData.append(UIImageJPEGRepresentation(imgparameters["fileName"] as! UIImage, 0.5)!, withName: "file", fileName: "swift_file.\(imageextension)", mimeType: "image/\(imageextension)")
            }
            else if(imageextension == "gif")
            {

                multipartFormData.append(UIImagePNGRepresentation(imgparameters["fileName"] as! UIImage)!, withName: "file", fileName: "swift_file.\(imageextension)", mimeType: "image/\(imageextension)")
            }
            else
            {
                multipartFormData.append(UIImagePNGRepresentation(imgparameters["fileName"] as! UIImage)!, withName: "file", fileName: "swift_file.\(imageextension)", mimeType: "image/\(imageextension)")
            }

        }

        for (key, value) in postparams {
            multipartFormData.append((value as AnyObject).data(using: String.Encoding.utf8.rawValue)!, withName: key)
        }

    }, to:requestURL,method : methodType,headers : Header)
    { (result) in
        switch result {
            case .success(let upload, _, _):

            upload.uploadProgress(closure: { (Progress) in
                print("Upload Progress: \(Progress.fractionCompleted)")
            })

            upload.responseJSON { response in

                self.handleResponse(response: response, completionBlockX: completionBlock)

                print(response.request as Any)  // original URL request

            }

            case .failure(let encodingError):
            //self.delegate?.showFailAlert()
            print(encodingError)
        }

    }

Выше приведен код для выбора изображения из галереи и загрузки его на сервер. Этот код отлично работает для .png, .jpg, .jpeg, а не для .gif при загрузке .gif изображения, которое он показывает как нормальное изображение.

Спасибо за быстрый ответ.

1 Ответ

0 голосов
/ 07 сентября 2018

Назад, когда вы сказали

let imageURL = info[UIImagePickerControllerReferenceURL] as! NSURL

у вас были оригинальные данные GIF на диске. Это то, что вы хотите загрузить.

...