Las*_*boy 5 gif animated-gif uiimagepickercontroller ios swift
在iOS Swift中,我很难将动画GIF从设备照片库加载到UIImageView或从中创建.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)
}
Run Code Online (Sandbox Code Playgroud)
最理想的情况是,我想将照片库图像保存到服务器上的gif文件中.从那里我可以毫不费力地显示它.但是,我需要一些帮助将照片库中的数据转换为某种类型的属性,而不会丢失动画.我需要使用像ALAssetsLibrary这样的东西吗?
谢谢.
是的,使用ALAssetsLibrary→现在称为PHAsset.
你应该得到gif的NSData,而不是UIImage(因为UIImage只会得到第一帧.)
所以基本上你会做这样的事情:
一个你获得资产
let requestOptions = PHImageRequestOptions()
requestOptions.isSynchronous = true // adjust the parameters as you wish
PHImageManager.default().requestImageData(for: asset, options: requestOptions, resultHandler: { (imageData, UTI, _, _) in
if let uti = UTI,let data = imageData ,
// you can also use UTI to make sure it's a gif
UTTypeConformsTo(uti as CFString, kUTTypeGIF) {
// save data here
}
})
Run Code Online (Sandbox Code Playgroud)
资源:PHAsset
| 归档时间: |
|
| 查看次数: |
3746 次 |
| 最近记录: |