从用户的照片库中删除照片?
有没有一种方法可以删除从UIImagePickerController
加载到我的应用程序的图像?从用户的照片库中删除照片?
我希望能够在用户执行特定操作时从用户的照片库中删除图像。
我提示用户从他们的库中选择一个图像,然后将其加载到我的应用程序中,此时应用程序会执行一些动画,然后实际删除图像。
请帮忙!
Apple实际上并不允许您通过API从照片库中删除。用户必须切实转到照片应用并自行将其手动删除。苹果确实允许你写的照片库:
静止图像保存到用户的 保存的照片相册,使用 UIImageWriteToSavedPhotosAlbum 功能。要将电影保存到 用户的“保存的照片”相册,请使用 UISaveVideoAtPathToSavedPhotosAlbum 函数。
但是,对于删除和编辑/覆盖现有的照片,苹果公司目前没有类似的东西。
实际上,您可以删除您的应用程序保存的照片(使用UIImageWriteToSavedPhotosAlbum API调用保存到照片库)。
有记录的API [ALAsset setImageData:metadata:completionBlock:]
的作品。
1)。将图片“photo.jpg”添加到您的项目中
2)。将图像保存至资产库:
ALAssetsLibrary *lib = [ALAssetsLibrary new];
UIImage *image = [UIImage imageNamed:@"photo.jpg"];
[lib writeImageToSavedPhotosAlbum:image.CGImage metadata:@{} completionBlock:^(NSURL *assetURL, NSError *error) {
NSLog(@"Write image %@ to asset library. (Error %@)", assetURL, error);
}];
3)。转到默认图库,您会在“已保存的照片”相册中找到photo.jpg。 4)。从资产库中删除此图片:
ALAssetsLibrary *lib = [ALAssetsLibrary new];
[lib enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
[group enumerateAssetsUsingBlock:^(ALAsset *asset, NSUInteger index, BOOL *stop) {
if(asset.isEditable) {
[asset setImageData:nil metadata:nil completionBlock:^(NSURL *assetURL, NSError *error) {
NSLog(@"Asset url %@ should be deleted. (Error %@)", assetURL, error);
}];
}
}];
} failureBlock:^(NSError *error) {
}];
5)。转到默认图库,您会发现photo.jpg已被删除。
是的,我们可以删除一张照片。我们可以使用PHAssetChangeRequest
进行此操作。
从苹果:
创建,删除,修改元数据,或编辑照片资产的内容,在照片库中的变化块使用的要求。
class func deleteAssets(_ assets: NSFastEnumeration)
其中资产: PHAsset对象数组被删除。
PHAssetChangeRequest.deleteAssets([assetToDelete])
因此,您可以使用上面的代码来删除资产。
下面是SWIFT代码3,
PHPhotoLibrary.shared().performChanges({
let imageAssetToDelete = PHAsset.fetchAssets(withALAssetURLs: imageUrls as! [URL], options: nil)
PHAssetChangeRequest.deleteAssets(imageAssetToDelete)
}, completionHandler: {success, error in
print(success ? "Success" : error)
})
我们不能要求使用照片框架的缺失?我想,是的,我们可以。 – 2017-11-21 11:17:30
PHAssetChangeRequest.deleteAssets([assetToDelete]) – 2017-11-21 11:18:27
https://developer.apple.com/documentation/photos/phassetchangerequest/1624062-deteteassets – 2017-11-21 11:18:45