iOS 检查库中是否存在图像

标签 ios objective-c uiimage alassetslibrary

我目前正在从事一个项目,该项目要求将拍摄的照片保存在照片库中。我使用以下代码完成此操作:

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/

相关文章:

ios - 获取 NSArray 中字符串属性以特定字母开头的所有对象

ios - 使用 isEqualToNumber 方法比较两个 NSNumber

ios - 为每个 UITableViewCell 创建一个按钮

iphone - 如何从 GPUImageView 获取 UIImage

Swift - 从相机获取 UIImages (AVCaptureSession)

ios - Swift - viewController 之间无限滚动

ios - 在 Realm 中存储来自 API 的数据

iphone - UIAlertView 按钮( subview )未在 iOS 7 中显示

iphone - UIWebview中的超链接点击方法

ios - 在 drawRect 中绘制时图像略微模糊(Swift)