我目前正在从事一个项目,该项目要求将拍摄的照片保存在照片库中。我使用以下代码完成此操作:
self.library = [[ALAssetsLibrary alloc] init];
[self.library saveImage:imgResult toAlbum:bundleIDForAlbum withCompletionBlock:^(NSError *error) {
if (error!=nil) {
NSLog(@"Big error: %@", [error description]);
}
}];
但是,如果图像已经存在,我不想将它保存到库中。
喜欢 -
if( ! [self checkIfImageExists])
{
self.library = [[ALAssetsLibrary alloc] init];
[self.library saveImage:imgResult toAlbum:bundleIDForAlbum withCompletionBlock:^(NSError *error) {
if (error!=nil) {
NSLog(@"Big error: %@", [error description]);
}
}];
}
编写方法定义 -
-(BOOL) checkIfImageExists
{
//What do I do here???
}
请看:我正在寻找一个智能的解决方案,而不是自己维护一个记录,方法是将它写入带有名称的本地文件,并保留另一个记录来检查哪个文件名已经保存到库中.
编辑
图像由来自 UIImagePickerController 的图像填充,然后在单击“完成”按钮时保存。
如果用户查看并添加一张图片,则有 4 张已保存的图片。还有一个是新的。我现在只想将新的保存到库中。
最佳答案
我想,这是不可能的。
您可以尝试的一件事是,使用 SHA-1,它呈现为十六进制数,一个文件的长度为 40 位。或者,您可以使用 MD5。
为您的 imgResult
创建 SHA-1 表示,然后枚举所有照片库图像并为每个图像创建 SHA-1 表示以进行比较。
我不抱太大希望,因为与照片库图像一起保存的位置、时间和其他元数据会更改二进制文件内容,而 SHA-1 会产生相同的图像。
关于iOS 检查库中是否存在图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29559034/