如何创建UIImageGIFRepresentation函数?

时间:2017-01-10 20:49:37

标签: ios swift uiimage uiimagepickercontroller gif

使用Swift 3 for iOS,我可以使用cinemagraphs(动画GIF),我通过UIWebView下载没有任何问题。我也试图让他们从iPhone库中工作。但是,我无法找到存储在库中的GIF的数据表示。

有人会说“图书馆里没有GIF动画这样的东西”,但是他们错了。转到Safari中的网页,长按动画gif,然后将其保存到您的库中。然后向自己发送短信并从库中复制该图像。你会看到动画gif完好无损并且完美无缺。

我的问题是我需要以编程方式从库中复制图像,而我不知道如何在没有为GIF构建的特定功能的情况下执行此操作。我想创建相当于UIImagePNGRepresentation或UIImageJPEGRespresentation,GIF图像除外。或者,有没有办法从库中获取图像作为UIImage,所以我不必尝试将其转换为数据?

以下是我用于其他图片格式的代码: *编辑为最新版本*

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    let origImage = info[UIImagePickerControllerOriginalImage] as! UIImage
    let refURL : URL = info[UIImagePickerControllerReferenceURL] as! URL
    var resizedImage: UIImage!
    var ext: String!

    ext = refURL.pathExtension

    if ext == "GIF" {
        resizedImage = origImage
    } else {
        resizedImage = resizeImage(origImage: origImage, ext: ext)
    }

    DispatchQueue.main.async(execute: { () -> Void in
        self.photoUpdated(newImage: resizedImage)
    })

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

}

对于GIF,我使用SwiftGif项目尝试了以下操作,该项目未成功:

let url = Bundle.main.url(forResource: refURL.absoluteString, withExtension: "GIF")
let data = try! Data(contentsOf: url!)

let advTimeGif = UIImage.gifWithData(data)
let imageView = UIImageView(image: advTimeGif)
newImage = imageView.image

任何人都有任何关于如何让它工作的建议?感谢。

编辑:

我想出了一些难题。具体来说,我可以获取图像名称和它的本地路径。

let refURL : URL = info[UIImagePickerControllerReferenceURL] as! URL
let documentDirectory = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first! as String
let localPath = URL(fileURLWithPath: documentDirectory).appendingPathComponent(imageName)
let image = info[UIImagePickerControllerOriginalImage] as! UIImage

仍然无法弄清楚如何从那里获取数据。

0 个答案:

没有答案