从自定义相册 PHPhotoLibrary 目标 C 中删除图像

Posted

技术标签:

【中文标题】从自定义相册 PHPhotoLibrary 目标 C 中删除图像【英文标题】:Delete Image from Custom Album PHPhotoLibrary objective C 【发布时间】:2017-05-23 10:33:57 【问题描述】:

在我的应用程序中,我使用了编辑图片并保存在名为“Fab”的图库中的自定义文件夹中。现在有什么可以从文件夹中删除该图像吗?我找到了不同的解决方案,但它们需要资产 URL。我使用了 Photos 框架,那么如何获取特定图像的资产 url 以进行删除?

【问题讨论】:

您的问题解决了吗?需要帮助吗? 感谢您的帮助。 检查我的答案它解决了你的问题,因为我在我的项目中使用这个代码。 让我检查一下... ok 检查并告诉您是否遇到任何问题 【参考方案1】:
 PHAsset *tempPhasset = [_arrImageForAssetCameraRoll objectAtIndex:index]; // here pass your PHasset that you want to delete .
 NSString *localStr=tempPhasset.localIdentifier;
 NSRange range = [localStr rangeOfString:@"/"];
 NSString *newString = [localStr substringToIndex:range.location];
 NSString *appendedString=[NSString stringWithFormat:@"%@%@%@",@"assets-library://asset/asset.JPG?id=",newString,@"&ext=JPG"];
 NSLog(@"%@ phasset ",appendedString);
 NSURL *deleteurl = [NSURL URLWithString:appendedString];
 NSArray *arrDelete = [[NSArray alloc] initWithObjects:deleteurl , nil];
 PHFetchResult *asset = [PHAsset fetchAssetsWithALAssetURLs:arrDelete  options:nil];

 [asset enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) 
            NSLog(@"%@",[obj class]);
            [[phphotoLibrary sharedPhotoLibrary] performChanges:^
                BOOL req = [obj canPerformEditOperation:PHAssetEditOperationDelete];
                if (req) 
                    NSLog(@"true");
                    [PHAssetChangeRequest deleteAssets:@[obj]];
                
             completionHandler:^(BOOL success, NSError *error) 
                NSLog(@"Finished Delete asset. %@", (success ? @"Success." : error));
                if (success) 
                    NSLog(@"delete successfully");
                else
                    NSLog(@"delete Cancel");

                
 ];

对我的代码有任何疑问,然后发表评论。 快乐编码。

【讨论】:

如何删除多个图片数组资产? @RamaniHitesh 这里是您传递数组并从相机胶卷中删除所有资产的循环。 @RamaniHitesh 我在我的旧项目中使用相同的代码,它的工作完全文件。 但是先生,我这边不工作,请试试这个代码,然后让我知道可能与否【参考方案2】:

试试下面的代码

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];  

[library writeImageToSavedPhotosAlbum:[viewImage CGImage] orientation:(ALAssetOrientation)[viewImage imageOrientation] completionBlock:^(NSURL *assetURL, NSError *error)  
    if (error)   
        NSLog(@"error");  
     else   
            NSLog(@"url %@", assetURL);  
      
];  

将返回保存图像的 url。

【讨论】:

ALAssetsLibrary 已弃用。我使用了PHAsset。所以这不是答案

以上是关于从自定义相册 PHPhotoLibrary 目标 C 中删除图像的主要内容,如果未能解决你的问题,请参考以下文章

从自定义相册中删除图像

iOS--app自定义相册--从自定义的相册中获取图片

如何使用 PHPhotoLibrary 将视频/图像写入保存的相册?

首次运行时将照片保存在自定义相册中失败

如何在 iOS9 中使用 PHPhotolibrary 将照片保存在带有元数据的相册中?

在 PHPhotoLibrary 中,photoLibraryDidChange 不会通知所有更新