How to save movie to custom named album in swift

in lens C, you can save the video to a custom photo album using code similar to the following

-(void)saveImage:(UIImage*)image
         toAlbum:(NSString*)albumName
withCompletionBlock:(SaveImageCompletion)completionBlock;

      

I can't figure out how to do this quickly when I look at the definition of ALAssetsLibrary. I don't see any call to the toAlum or savedImage function. I don't seem to understand this?

+3


source to share


1 answer


Here is the code I used

var albumFound : Bool = false
var assetCollection: PHAssetCollection!
var photosAsset: PHFetchResult!
var assetThumbnailSize:CGSize!

// Create the album if does not exist (in viewDidLoad)
      if let first_Obj:AnyObject = collection.firstObject{
                //found the album
                self.albumFound = true
                self.assetCollection = collection.firstObject as PHAssetCollection
            }else{
                //Album placeholder for the asset collection, used to reference collection in completion handler
                var albumPlaceholder:PHObjectPlaceholder!
                //create the folder
                NSLog("\nFolder \"%@\" does not exist\nCreating now...", albumName)
                PHPhotoLibrary.sharedPhotoLibrary().performChanges({
                    let request = PHAssetCollectionChangeRequest.creationRequestForAssetCollectionWithTitle(albumName)
                    albumPlaceholder = request.placeholderForCreatedAssetCollection
                    },
                    completionHandler: {(success:Bool, error:NSError!)in
                        NSLog("Creation of folder -> %@", (success ? "Success":"Error!"))
                        self.albumFound = (success ? true:false)
                        if(success){
                            let collection = PHAssetCollection.fetchAssetCollectionsWithLocalIdentifiers([albumPlaceholder.localIdentifier], options: nil)
                            self.assetCollection = collection?.firstObject as PHAssetCollection
                        }
                })
            }



let bundle = NSBundle.mainBundle()
            let myFilePath = bundle.pathForResource("highlight1", ofType: "mov")
            let videoURL:NSURL = NSURL.fileURLWithPath(myFilePath!)!

            let priority = DISPATCH_QUEUE_PRIORITY_DEFAULT
            dispatch_async(dispatch_get_global_queue(priority, 0), {
                PHPhotoLibrary.sharedPhotoLibrary().performChanges({
                    //let createAssetRequest = PHAssetChangeRequest.creationRequestForAssetFromImage
                    let createAssetRequest = PHAssetChangeRequest.creationRequestForAssetFromVideoAtFileURL(videoURL)
                    let assetPlaceholder = createAssetRequest.placeholderForCreatedAsset
                    let albumChangeRequest = PHAssetCollectionChangeRequest(forAssetCollection: self.assetCollection, assets: self.photosAsset)
                    albumChangeRequest.addAssets([assetPlaceholder])
                    }, completionHandler: {(success, error)in
                        dispatch_async(dispatch_get_main_queue(), {
                            NSLog("Adding Image to Library -> %@", (success ? "Sucess":"Error!"))
                            //picker.dismissViewControllerAnimated(true, completion: nil)
                        })
                })

            })

      



Keep in mind that I am doing this copying a file from my package to this album (by pre-filling it with a video)

+2


source







All Articles