使用PHPhotoLibrary将下载的图像保存到相机胶卷

时间:2017-11-26 17:08:11

标签: ios phasset

我触发了图像的后台下载。它成功了 - 位置是实际图像的路径。我没有收到任何错误消息,但图片也没有显示在照片应用中。我已设置NSPhotoLibraryUsageDescription Info.plist键。该应用有权访问照片。我知道,这段代码触发了另一个后台线程,但这应该不是问题,因为“didFinishDownloadingTo”完成后“location”文件仍然存在。将JPG文件存储到相机胶卷时还有什么需要注意的吗?

    func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL) {

        PHPhotoLibrary.shared().performChanges({
            print("starting")
            let req = PHAssetCreationRequest.forAsset()
            req.isFavorite = true;

            let options = PHAssetResourceCreationOptions();
            options.shouldMoveFile = true;

            req.addResource(with: PHAssetResourceType.photo, fileURL: location, options: options)
        })
    }

1 个答案:

答案 0 :(得分:3)

您未正确使用addResource。你拥有的不是资源;这是形象。首先,从URL加载数据并将其转换为图像:

if let url = location, let d = try? Data(contentsOf:url) {
    let im = UIImage(data:d)
}

现在只需将图片添加为资产:

     PHPhotoLibrary.shared().performChanges({
         PHAssetChangeRequest.creationRequestForAsset(from: im!)
     })

你自己说服了那个有效的,你可以开始装扮它。