使用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
仍然无法弄清楚如何从那里获取数据。