我正在创建一个应用程序,从手机的照片库中提取图像并从中删除重复的图像。我搜索了很多但没有找到任何方法从照片库中删除图像。
答案 0 :(得分:1)
我为此创建了演示 这是代码 我使用UIImageJPEGRepresentation将图像转换为数据。并比较它们给我结果。还有其他任何我们可以比较的图像属性吗?
UIImage *img1 = [UIImage imageNamed:@"1.jpg"];
UIImage *img2 = [UIImage imageNamed:@"2.jpg"];
NSData *data1 = UIImageJPEGRepresentation(img1, 1.0);
NSLog(@"%@",data1);
NSData *data2 = UIImageJPEGRepresentation(img2, 1.0);
NSLog(@"%@",data2);
if ([data1 isEqualToData:data2])
{
NSLog(@"yes");
}
else
{
NSLog(@"no");
}
答案 1 :(得分:0)
如你所知,我们无法修改沙箱旁边的任何内容。因此,在ios 8之前无法从照片库中删除照片。但是在ios 8及更高版本中支持从库中删除照片但在删除之前它会询问用户您要删除的照片。如果用户允许,则会删除照片。 我向你提供了我在我的应用程序中用来删除照片库中照片的代码。
if (check system version >= 8.0)
{
PHPhotoLibrary *library = [PHPhotoLibrary sharedPhotoLibrary];
[library performChanges:^{
PHFetchResult *assetsToBeDeleted = [PHAsset fetchAssetsWithALAssetURLs:delet
options:nil];
[PHAssetChangeRequest deleteAssets:assetsToBeDeleted];
} completionHandler:^(BOOL success, NSError *error) {
//do something here when error
}];
}
其中 delet 是借助AssetLibrary框架从图书馆获取的图片资产网址数组。
答案 2 :(得分:0)
PHFetchResult *moments = [PHAssetCollection fetchMomentsWithOptions:nil];
for (PHAssetCollection *moment in moments)
{
PHFetchResult *assetsFetchResults = [PHAsset fetchAssetsInAssetCollection:moment options:nil];
for (PHAsset *asset in assetsFetchResults)
{
// Do something with assets, for example add them to array.
}
}