ALAsset 唯一标识符

4
我想要从照片库中复制一张图片,但是我希望在未来检查是否已经导入了该图片。
假设如下场景: 1. 我的照片库中有一张照片。 2. 我通过复制将其导入到我的应用中。 3. 我将此照片从我的照片库中删除。 4. 稍后,我重新将这个图片插入到我的照片库中(与 iPhoto 中的相同照片,只是在之前没有同步它的相册,现在我有了)。
请问我能使用什么唯一标识符来比较这两张图片呢?URL 是否唯一?还是必须查看元数据并尝试匹配?如果是这样,您会建议使用哪些元数据?创建日期和位置?仅创建日期?大小?
感谢您的建议。
1个回答

3

注意事项

我曾经处理过类似的功能,以下是我的了解:

  • 每个插入相册的照片都有唯一的URL(这意味着如果您插入一张图片,然后将其删除并再次插入,即使是相同的图片,它也会具有新的URL)。
  • 没有直接的方法来判断图像是否与以前的图像重复。
  • 我不认为你正在尝试这样做,但我要警告你不能从iPhone相册中编程删除图像。

解决方案

我只有一种处理方式:创建照片的哈希值并将其存储在某个地方。如果插入的照片与之前完全相同,则应该会得到相同的哈希值。您可以使用哈希比较来确定您是否正在使用相同的照片。这是我使用的方法,对于大部分情况而言,它似乎非常可靠。但我注意到有些差异,这通常涉及在将文件添加到照片库之前对文件进行哈希处理(我已经注意到保存的照片可能与正在保存的照片不同)。

希望这些信息能够帮助您。如果我漏掉了什么或者您在工作中发现不同的结果,请告诉我。


感谢您的观察,非常有帮助。从库中删除图像并再次添加时会发生不同的事实确实很遗憾,但我想这是必要的。他们必须处理具有相同名称和日期等相同文件的情况。幸运的是,我不必尝试匹配照片,否则真的会很痛苦,但您描述的技术似乎是我会选择的技术。我担心如果您只更新库,则URL会更改,但它们没有,这太棒了。再次感谢。 - Leonardo Amigoni

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接