我需要知道图片是否已经在iOS图库中。我正在开发一个消息传递客户端应用程序,在我的聊天列表中,当我点击图像缩略图时,我能够下载传入消息的图像/视频。
问题是,当我点击缩略图时,我下载并将该图像保存到iOS照片库中,但是如果我再次点击我不想下载并再次保存它,我想从中检索它照片库。
恢复,我想在照片库中查找图像并检索它。
以下是使用ALAssetsLibrary将我的图像保存在自定义相册中的代码:
[self writeImageToSavedPhotosAlbum:image.CGImage orientation:(ALAssetOrientation)image.imageOrientation completionBlock:
^(NSURL* assetURL, NSError* error)
{
if (error!=nil) {
completionBlock(error);
return;
}
//add the asset to the custom photo album
[self addAssetURL: assetURL
toAlbum:albumName
withCompletionBlock:completionBlock];
}
];
-(void)addAssetURL:(NSURL*)assetURL toAlbum:(NSString*)albumName withCompletionBlock:(SaveImageCompletion)completionBlock
{
__block BOOL albumWasFound = NO;
[self enumerateGroupsWithTypes:ALAssetsGroupAlbum
usingBlock:
^(ALAssetsGroup *group, BOOL *stop)
{
if ([albumName compare: [group valueForProperty:ALAssetsGroupPropertyName]]==NSOrderedSame) {
albumWasFound = YES;
[self assetForURL: assetURL
resultBlock:
^(ALAsset *asset)
{
//add photo to the target album
[group addAsset: asset];
completionBlock(nil);
} failureBlock: completionBlock
];
return;
}
if (group==nil && albumWasFound==NO) {
//Target album does not exist, create it
__weak ALAssetsLibrary* weakSelf = self;
[self addAssetsGroupAlbumWithName:albumName
resultBlock:
^(ALAssetsGroup *group)
{
[weakSelf assetForURL: assetURL
resultBlock:
^(ALAsset *asset)
{
//add photo to the newly created album
[group addAsset: asset];
completionBlock(nil);
} failureBlock: completionBlock
];
} failureBlock: completionBlock
];
return;
}
} failureBlock: completionBlock
];
}
也许使用assetURL我可以做到,但我一直在Apple的文档中搜索,但我没有看到任何内容。
谢谢!
答案 0 :(得分:0)
您可以使用完成块在保存过程后获取资产URL。您可以使用此资产URL检索已保存的图像。
不幸的是,你无法检查文件存在在Photolibrary中。背后的原因是,当您保存到Photolibrary时,系统会自动在图像中嵌入许多额外信息。例如位置,时间等。所以对于相同的图像,二进制内容将是不同的。
所以,你只有一个解决方案。将图像保存到文档目录中,并使用 CRC , MD5 等算法存在文件。