从代码 iOS 中删除相机胶卷中的图像

Posted

技术标签:

【中文标题】从代码 iOS 中删除相机胶卷中的图像【英文标题】:Delete images in camera roll from code iOS 【发布时间】:2015-01-13 18:09:21 【问题描述】:

有没有办法在我的应用未创建的照片应用中删除相机胶卷中的图像(和视频)。我知道您不能从资产库中删除不是您的应用创建的内容。但是这个应用程序不在应用商店。它位于信息亭类型的环境中。所以我可以使用私有 API。

那么有没有一种方法可以使用苹果不会批准应用商店的私有 API 来做到这一点,但会适用于我的情况。

谢谢。

【问题讨论】:

【参考方案1】:

是的,您可以在 ios 8 中使用 Photos 框架做到这一点。

例如,如果您将资产 URL 存储在 NSArray *assetsURLs

phphotoLibrary *library = [PHPhotoLibrary sharedPhotoLibrary];
    [library performChanges:^
        PHFetchResult *assetsToBeDeleted = [PHAsset fetchAssetsWithALAssetURLs:assetsURLs options:nil];
        [PHAssetChangeRequest deleteAssets:assetsToBeDeleted];
     completionHandler:^(BOOL success, NSError *error)
     
         //do something here
    ];

此代码将要求用户确认从相机胶卷中删除。

【讨论】:

有人做过这项工作吗?我不相信应用可以从相机胶卷中删除资产。 在类参考中。 deleteAssets: 是的,它有效,但正如他所说,它需要用户确认【参考方案2】:

这是一个 Swift 版本,它将删除库中的所有照片。

首先,您需要确保在应用的 info.plist 文件中拥有权限密钥:

您需要获得用户的许可才能访问照片(此处不包括代码)。

接下来,导入&代码:

import Photos

func deleteAllPhotos() 
    let library = PHPhotoLibrary.shared()
    library.performChanges(
        let fetchOptions = PHFetchOptions()
        let allPhotos = PHAsset.fetchAssets(with: .image, options: fetchOptions)
        PHAssetChangeRequest.deleteAssets(allPhotos)
    )  (success, error) in
        // Handle success & errors
    

调用此代码时,用户会收到操作系统提示,要求确认删除。假设他们点击是,那么一切都消失了。

【讨论】:

以上是关于从代码 iOS 中删除相机胶卷中的图像的主要内容,如果未能解决你的问题,请参考以下文章

从 iOS 中的相机胶卷中获取特定图像

将相机胶卷中的所有图像存储为数组

删除相机胶卷中的照片

自定义相册中的图像保存问题以及 iphone 中的默认相机胶卷

IOS如何以全分辨率从相机胶卷中选择图像

如何避免将从相机胶卷中挑选的图像保存到相机胶卷? [iOS]