簡體   English   中英

從照片庫中刪除圖像

[英]Delete image from Photo Gallery

在我的應用程序中,我有一個功能可以將圖像保存到在照片庫中創建的自定義收藏相冊中:

func save(image: UIImage) {
    if assetCollection == nil {
        return
    }
    PHPhotoLibrary.shared().performChanges({
        let assetChangeRequest = PHAssetChangeRequest.creationRequestForAsset(from: image)
        let assetPlaceHolder = assetChangeRequest.placeholderForCreatedAsset
        let albumChangeRequest = PHAssetCollectionChangeRequest(for: self.assetCollection)
        let enumeration: NSArray = [assetPlaceHolder!]
        albumChangeRequest!.addAssets(enumeration)
    }, completionHandler: nil)
}

UIImages 是由用戶在以前的 VC 中創建的。 此外,它們被保存到文檔目錄中,然后在我的應用程序中顯示在單獨 VC 的集合視圖中。

稍后用戶可以選擇所需的照片,然后將其顯示在新的 VC 中,並通過單擊 Trash TabBarButton 將其刪除。 當按下按鈕時,圖像會從文檔目錄中刪除,因此它也會從集合視圖中消失。

我想要實現的是同時從照片庫中刪除這張照片。 因此,當用戶單擊垃圾箱按鈕時,也會從文檔目錄和照片庫中刪除所選照片。

到目前為止我所取得的成就 - 創建了獲取圖像 URL 並根據該 URL 刪除項目的函數,就像我對文檔目錄所做的那樣:

func deleteSelectedPhotoFromGallery() {
    PHPhotoLibrary.shared().performChanges({
        let imageAssetToDelete = PHAsset.fetchAssets(withALAssetURLs: self.loadURL() as! [URL], options: nil)
        PHAssetChangeRequest.deleteAssets(imageAssetToDelete)
    })
}

編輯:這就是我獲取 URL 的方式:

func loadURL() -> [NSURL?]? {
    let retrievedData = UserDefaults.standard.object(forKey: DefaultKeys.imagesURL.rawValue) as? [String]
    return retrievedData?.map { NSURL(string: $0) }
}

問題:

  • fetchAssets(withALAssetURLs) - 將被棄用,用什么代替?
  • 如何獲取正在保存到 PhotoLibrary 的圖像 URL?

基本上,我需要一些方法來從之前保存的照片庫中刪除圖像。 我想知道您是否可以在保存時以某種方式檢測圖像 URL 或路徑,然后將它的路徑存儲到 UserDefaults 中,然后使用它的路徑或 URL 刪除它。

之前有過關於這個問題的問題,但他們使用 ImagePicker 來檢測圖像 URL 和在 objc 中寫入的位置,但我想在不使用 ImagePicker 的情況下快速找到解決方案。

謝謝。

fetchAssets(withALAssetURLs) - 將被棄用,用什么代替? 如何獲取正在保存到 PhotoLibrary 的圖像 URL?

你沒有。 這就是它被棄用的原因! 您將獲得資產的localIdentifier 這允許您訪問資產並在以后將其刪除。

您的完成處理程序為空。 那就是問題所在。 編寫完成處理程序並從占位符中獲取本地標識符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM