【问题标题】:Avoiding to save image duplicates避免保存图像重复
【发布时间】:2011-08-25 12:49:16
【问题描述】:

我的应用允许用户选择图片并将它们与某些文本相关联。

当用户从相册中选择图像时,我将其复制到 Documents 目录中。

由于用户应该选择相同的 img 将其与相同的文本或另一个相关联,我如何避免保存相同图像的重复项?

我不能简单地使用 fileExistsAtPath,因为名称是动态生成的。

有没有办法知道用户是否选择了已经保存在文档目录中的图像?

【问题讨论】:

    标签: iphone uiimagepickercontroller photo-gallery nsdocumentdirectory


    【解决方案1】:

    看看Generate hash from UIImage,它显示了两种比较两个图像的方法。第一个使用 md5 哈希算法,另一个使用 NSData 的 isEqualToData 和 UIImagePNGRepresentation 函数。

    但是,您也可以先比较文件大小和图像尺寸,以避免使用更昂贵的方法。

    【讨论】:

    • @Nick Weaver:每次用户选择图像时,我都必须与文档目录中的所有图像进行比较。我想首先比较文件大小和图像尺寸,然后使用 md5 算法。当我使用 sqlite3 数据库时,您知道从效率的角度来看,将图像的 md5 结果保存在数据库中是否更好?
    • @Objnewbie 当然可以。哈希是某种元数据,只要图像不改变,它就不会改变,所以像大小等其他信息一样保存在数据库中。
    • @Nick Weaver:非常感谢。我也在考虑像文件名一样使用它的想法。
    • @Nick Weaver:我使用了在您提供的链接之后找到的解决方案,但同一图像上的 md5 总是不同的。你知道如何解决这个问题吗?
    • @Objnewbie 这确实很奇怪。存储一些非常小的参考图片并转储字节以查看是否有变化可能会很有趣。
    【解决方案2】:

    您可以计算校验和并将其与文档目录中已有照片的校验和进行比较。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-15
      • 2020-05-18
      • 1970-01-01
      • 2023-04-06
      相关资源
      最近更新 更多