【问题标题】:iOS 9 save gif to photo libraryiOS 9 将 gif 保存到照片库
【发布时间】:2016-05-02 18:50:15
【问题描述】:

现在AssetsLibrary 已被弃用,我们应该使用照片框架,特别是PHPhotoLibrary 将图像和视频保存到用户的相机胶卷。

使用 ReactiveCocoa,这样的请求看起来像:

func saveImageAsAsset(url: NSURL) -> SignalProducer<String, NSError> {
    return SignalProducer { observer, disposable in
        var imageIdentifier: String?
        PHPhotoLibrary.sharedPhotoLibrary().performChanges({
            let changeRequest = PHAssetChangeRequest.creationRequestForAssetFromImageAtFileURL(url)
            let placeholder = changeRequest?.placeholderForCreatedAsset
            imageIdentifier = placeholder?.localIdentifier
        }, completionHandler: { success, error in
            if let identifier = imageIdentifier where success {
                observer.sendNext(identifier)
            } else if let error = error {
                observer.sendFailed(error)
                return
            }
            observer.sendCompleted()
        })
    }
}

我使用Regift 从视频中创建了一个 gif,我可以验证该 gif 是否存在于我的临时目录中。但是,当我将该 gif 保存到相机胶卷时,我收到了一个神秘的错误:NSCocoaErrorDomain -1 (null),这真的非常有用。

有人遇到过这个问题吗?

【问题讨论】:

  • 遇到同样的问题,找不到解决办法,可能是文件格式不支持。
  • 偶然解决?
  • 很遗憾没有,这个项目很久以前我什至不确定我是否有代码了

标签: ios swift camera-roll


【解决方案1】:

你可以试试这个。

let data = try? Data(contentsOf: /*Your-File-URL-Path*/)
PHPhotoLibrary.shared().performChanges({
    PHAssetCreationRequest.forAsset().addResource(with: .photo, data: data!, options: nil)
})

【讨论】:

  • 欢迎来到 SO!虽然此代码可能会解决问题中的问题,但我们可以通过添加描述此代码工作原理的简短说明来改进此答案。
猜你喜欢
  • 2017-10-11
  • 2014-02-05
  • 1970-01-01
  • 1970-01-01
  • 2013-12-11
  • 2020-11-28
  • 2023-03-26
  • 2016-03-13
  • 1970-01-01
相关资源
最近更新 更多