从照片库中删除图像
Delete image from Photo Gallery
在我的应用程序中,我有一个功能可以将图像保存到在照片库中创建的自定义 collection 相册中:
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 中创建的。此外,它们被保存到文档目录中,然后显示在我的应用程序中 collection 视图中单独的 VC。
稍后用户可以 select 想要的照片,然后显示在新的 VC 中,然后单击垃圾桶 TabBar 按钮将其删除。当按下按钮时,图像将从文档目录中删除,因此它也会从 collection 视图中消失。
我想要实现的是同时从照片库中删除这张照片。因此,当用户单击垃圾箱按钮时,也会从文档目录和照片库中删除 selected 照片。
到目前为止我取得的成就 - 创建了获取图像 URLs 的函数,并根据 url 删除项目,就像我对文档目录所做的那样:
func deleteSelectedPhotoFromGallery() {
PHPhotoLibrary.shared().performChanges({
let imageAssetToDelete = PHAsset.fetchAssets(withALAssetURLs: self.loadURL() as! [URL], options: nil)
PHAssetChangeRequest.deleteAssets(imageAssetToDelete)
})
}
编辑:这就是我得到 URLs:
的方式
func loadURL() -> [NSURL?]? {
let retrievedData = UserDefaults.standard.object(forKey: DefaultKeys.imagesURL.rawValue) as? [String]
return retrievedData?.map { NSURL(string: [=12=]) }
}
问题:
- fetchAssets(withALAssetURLs) - 将被弃用,用什么代替?
- 如何获取正在保存到 PhotoLibrary 的图像 URL?
基本上,我需要一些方法来删除之前保存的照片库中的图像。我想知道您是否可以在保存图像时以某种方式检测到图像 URL 或路径,然后将其路径存储到 UserDefaults 中,然后使用它的路径或 URL.
删除它
以前有过关于这个问题的问题,但是他们使用 ImagePicker 来检测图像 URL 并且在 objc 中写入的位置,但我想在 swift 中有一个解决方案并且不使用 ImagePicker .
谢谢。
fetchAssets(withALAssetURLs) - will be deprecated, what to use instead?
how to get image URL that is being saved to PhotoLibrary?
你不知道。这就是它被弃用的原因!你得到资产的localIdentifier
。这使您可以访问资产并在以后将其删除。
您的完成处理程序为空。那就是问题所在。编写完成处理程序并从占位符中获取本地标识符。
在我的应用程序中,我有一个功能可以将图像保存到在照片库中创建的自定义 collection 相册中:
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 中创建的。此外,它们被保存到文档目录中,然后显示在我的应用程序中 collection 视图中单独的 VC。
稍后用户可以 select 想要的照片,然后显示在新的 VC 中,然后单击垃圾桶 TabBar 按钮将其删除。当按下按钮时,图像将从文档目录中删除,因此它也会从 collection 视图中消失。
我想要实现的是同时从照片库中删除这张照片。因此,当用户单击垃圾箱按钮时,也会从文档目录和照片库中删除 selected 照片。
到目前为止我取得的成就 - 创建了获取图像 URLs 的函数,并根据 url 删除项目,就像我对文档目录所做的那样:
func deleteSelectedPhotoFromGallery() {
PHPhotoLibrary.shared().performChanges({
let imageAssetToDelete = PHAsset.fetchAssets(withALAssetURLs: self.loadURL() as! [URL], options: nil)
PHAssetChangeRequest.deleteAssets(imageAssetToDelete)
})
}
编辑:这就是我得到 URLs:
的方式func loadURL() -> [NSURL?]? {
let retrievedData = UserDefaults.standard.object(forKey: DefaultKeys.imagesURL.rawValue) as? [String]
return retrievedData?.map { NSURL(string: [=12=]) }
}
问题:
- fetchAssets(withALAssetURLs) - 将被弃用,用什么代替?
- 如何获取正在保存到 PhotoLibrary 的图像 URL?
基本上,我需要一些方法来删除之前保存的照片库中的图像。我想知道您是否可以在保存图像时以某种方式检测到图像 URL 或路径,然后将其路径存储到 UserDefaults 中,然后使用它的路径或 URL.
删除它以前有过关于这个问题的问题,但是他们使用 ImagePicker 来检测图像 URL 并且在 objc 中写入的位置,但我想在 swift 中有一个解决方案并且不使用 ImagePicker .
谢谢。
fetchAssets(withALAssetURLs) - will be deprecated, what to use instead? how to get image URL that is being saved to PhotoLibrary?
你不知道。这就是它被弃用的原因!你得到资产的localIdentifier
。这使您可以访问资产并在以后将其删除。
您的完成处理程序为空。那就是问题所在。编写完成处理程序并从占位符中获取本地标识符。