ios - 从照片库中删除图像

标签 ios swift image 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 的 Collection View 中。

稍后用户可以选择所需的照片,然后在新的 VC 中显示并通过单击 Trash TabBarButton 将其删除。当按下按钮时,图像会从文档目录中删除,因此它也会从 Collection View 中消失。

我想要实现的是同时从照片库中删除这张照片。因此,当用户单击垃圾箱按钮时,也会从文档目录和照片库中删除选定的照片。

到目前为止我所取得的成就 - 创建了获取图像 URL 并根据该 URL 删除项目的函数,就像我对 Documents Directory 所做的那样:
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) - will be deprecated, what to use instead? how to get image URL that is being saved to PhotoLibrary?



    你没有。这就是它被弃用的原因!您将获得 Assets 的 localIdentifier .这使您可以访问 Assets 并在以后将其删除。

    您的完成处理程序是空的。那就是问题所在。编写完成处理程序并从占位符中获取本地标识符。

    关于ios - 从照片库中删除图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48766730/

    相关文章:

    swift - 通过 PHAsset 的实时照片和普通照片

    swift - 使用 Swift 3 按下时动画单元格

    image - 了解 Retina 设备 CSS 媒体查询

    css - Base64编码缓存

    ios越狱设备将静态库链接到第三方应用程序

    ios - 使用 AVCaptureSession 和 AVAssetWriter 在翻转相机的同时进行无缝录音

    ios - Pod (PaymentKit) 无法使用 imageNamed 加载图像

    ios - 从 JSON 响应对象中获取值

    swift - 如何将一个 SkAction 放到另一个 SkAction 的末尾?

    ios - 如何使用 writeToFile 将图像保存在文档目录中?