【发布时间】:2016-06-21 02:36:25
【问题描述】:
在 iOS Swift 中,我很难将设备照片库中的动画 GIF 加载到 UIImageView 或从中创建 .gif 文件。如果动画 GIF 是服务器上的文件或者它就在应用程序中,我可以毫无问题地显示动画 GIF。但是,当我从照片库中加载它时,我会丢失动画。我找到了一些 Objective-C 解决方案并尝试将它们转换为 Swift,但没有任何运气。
这是我目前所拥有的:
@IBAction func buttonTapped(sender: UIButton) {
selectPhoto()
}
func selectPhoto() {
let photoLibraryController = UIImagePickerController()
photoLibraryController.delegate = self
photoLibraryController.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
let mediaTypes:[String] = [kUTTypeImage as String]
photoLibraryController.mediaTypes = mediaTypes
photoLibraryController.allowsEditing = false
self.presentViewController(photoLibraryController, animated: true, completion: nil)
}
// UIImagePickerControllerDelegate
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
let origImage = info[UIImagePickerControllerOriginalImage] as! UIImage
self.imageView.image = origImage
picker.dismissViewControllerAnimated(true, completion: nil)
}
最理想的情况是,我想将照片库图像保存到服务器上的 gif 文件中。从那里我可以毫不费力地展示它。但是,我需要一些帮助才能将照片库中的数据转换为某种类型的属性,而不会丢失动画。我需要为此使用 ALAssetsLibrary 之类的东西吗?
谢谢。
【问题讨论】:
-
这是一种方法--> github.com/kaishin/Gifu。最简单的方法是使用 CocoaPods 安装它。以下是如何使用 CocoaPods--> raywenderlich.com/97014/use-cocoapods-with-swift。这是 ObjC 中的另一个解决方案--> stackoverflow.com/a/4386709/4475605
-
谢谢,@Adrian。我实际上已经设置了 Gifu 并且正在尝试它。它工作正常,只是它希望将图像编译到应用程序中。它不提供任何方法来从应用程序中的其他位置获取图像。因此,我无法让它与照片库中的图像一起使用。
-
可以阅读我的博客文章,了解一个处理内存使用和从磁盘加载的 GIF 加载库:modejong.com/blog/post6_new_animated_gif_decoder_for_avanimator
-
您知道使用设备的照片库作为来源的任何方法吗?我对它们作为文件或项目资源没有任何问题。如果不手动操作,我无法将它们从库中获取到文件中。
标签: ios swift uiimagepickercontroller gif animated-gif