在使用UIImagePickerController进行拾取后,如何从PhotoLibrary中删除图像

Din*_*kar 9 xcode ios swift

我需要从中删除图像PhotoLibrary.我UIImagePickerController在我的应用程序中使用它来获取图像.我需要在我的应用程序中使用它后从iOS PhotoLibrary中删除此图像.

我的代码片段

if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.PhotoLibrary)
            {
                var imagePicker = UIImagePickerController()
                imagePicker.delegate = self
                imagePicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary;
                imagePicker.allowsEditing = false
                self.presentViewController(imagePicker, animated: true, completion: nil)
            }


// MARK:- UIImagePickerControllerDelegate
func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]!) {
    pickedImage = image
    saveImageToDisk(pickedImage)
/*
I need the logic to delete this image from PhotoLibrary here.
*/
    self.dismissViewControllerAnimated(true, completion: nil)
    refreshCollectionView()
}
Run Code Online (Sandbox Code Playgroud)

Din*_*kar 8

谢谢您的帮助.

使用以下代码修复它.

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) {
    let image = info[UIImagePickerControllerOriginalImage] as! UIImage
    pickedImage = image
    saveImageToDisk(pickedImage)
    refreshCollectionView()
    let imageUrl = info[UIImagePickerControllerReferenceURL] as! NSURL
    var imageUrls = [imageUrl]
    //Delete asset 
    PHPhotoLibrary.sharedPhotoLibrary().performChanges( {
        let imageAssetToDelete = PHAsset.fetchAssetsWithALAssetURLs(imageUrls, options: nil)
        PHAssetChangeRequest.deleteAssets(imageAssetToDelete)
        },
        completionHandler: { success, error in
            NSLog("Finished deleting asset. %@", (success ? "Success" : error))
    })
    self.dismissViewControllerAnimated(true, completion: nil)
    refreshCollectionView()
}
Run Code Online (Sandbox Code Playgroud)


小智 7

只是添加到上面,对于swift 3.0,这对我有用.

PHPhotoLibrary.shared().performChanges({
                let imageAssetToDelete = PHAsset.fetchAssets(withALAssetURLs: imageUrls as! [URL], options: nil)
                PHAssetChangeRequest.deleteAssets(imageAssetToDelete)
            }, completionHandler: {success, error in
                print(success ? "Success" : error )
            })
Run Code Online (Sandbox Code Playgroud)


Rah*_*ani 6

获取图片网址 ....

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) {
    let imageURL = info[UIImagePickerControllerReferenceURL] as NSURL
    let imageName = imageURL.path!.lastPathComponent


    picker.dismissViewControllerAnimated(true, completion: nil)

}
Run Code Online (Sandbox Code Playgroud)

删除资产:

PHPhotoLibrary.sharedPhotoLibrary().performChanges( {
    let imageAssetToDelete = PHAsset.fetchAssetsWithALAssetURLs(**imageUrl**, options: nil)
    PHAssetChangeRequest.deleteAssets(imageAssetToDelete)
},
    completionHandler: { success, error in
        NSLog("Finished deleting asset. %@", (success ? "Success" : error))
})
Run Code Online (Sandbox Code Playgroud)