iOS 检查库中是不是存在图像

Posted

技术标签:

【中文标题】iOS 检查库中是不是存在图像【英文标题】:iOS Check if an image is present in the libraryiOS 检查库中是否存在图像 【发布时间】:2015-04-10 10:24:18 【问题描述】:

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

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 张已保存的图片。还有一个是新的。我现在只想将新的保存到库中。

【问题讨论】:

这些图片来自哪里,怎么可能是复制品?谁说你提出的解决方案不智能? 检查编辑,我只是​​想知道是否有任何方法可以检查图像是否已经存在于库中。我同意我的解决方案并不愚蠢,但我很肯定应该有更好的方法来做到这一点 【参考方案1】:

我认为,这是不可能的。

您可以尝试的一件事是使用 SHA-1,它呈现为十六进制数字,文件长度为 40 位。或者,您可以使用 MD5。

创建imgResult 的 SHA-1 表示,然后枚举所有照片库图像并为每个图像创建 SHA-1 表示以进行比较。

我不抱太大希望,因为与照片库图像一起保存的位置、时间和其他元数据会改变二进制文件的内容,并且 SHA-1 会产生相同的图像。

【讨论】:

以上是关于iOS 检查库中是不是存在图像的主要内容,如果未能解决你的问题,请参考以下文章

JGit:我可以在不检查的情况下找出某个特定标签是不是存在于 Git 存储库中吗?

检查歌曲是不是仍然存在

jQuery:检查图像是不是存在

IOS / Objective-C:测试图像是不是存在[重复]

SwiftUI - 检查图像是不是存在

如何检查图像是不是存在于特定位置?