我有近6年的照片分布在以下服务中:Flickr,Facebook,Instagram并存储在iPhoto中。
以编程方式确定每项服务中缺少哪些照片的最佳方法是什么?
我有一些想法:
我正在寻找一种方法来生成一个服务但不存在于另一个服务上的URL /文件名列表。
我对于解决方案使用的语言并不挑剔,这是在OS X上运行的。
答案 0 :(得分:4)
使用图像缩略图的MD5 ..不一定有效,因为不同的服务以不同方式裁剪图像。它们也会以不同方式压缩图像,因此您无法使用较大样本的md5运行。
不幸的是,像facebook这样的服务也会删除所有的EXIF数据..
以下是一种可能的解决方案:
我敢打赌你可以将图像分成2x2片并获得每个网格单元的平均颜色。每张图片有四个分数。要判断相似性,您只需要对图像之间的差异进行求和。
这基本上只是对图像的RGB平均值进行4次。这样做4次有助于解决轮换问题。
对于更简单,更快速和更强大的分析,我还建议使用TinEye API。
如果您想自己编写相似度计算算法,请查看以下内容:
答案 1 :(得分:1)
我会假设你已经知道如何通过每个服务的各种API获取照片,而问题的主要部分是比较照片。请查看以下有关SO的答案:
如果你不介意为你付费的网络服务,你可以试试Match Engine from Tineye。
答案 2 :(得分:1)
我认为维护照片的本地集中数据库应该是您工作的起点。因此,如果您还没有这样的数据库(或者它不是最新的),您应该继续并从所有帐户下载每条信息。
这项任务不应该太难。有几种官方/非官方的方法和工具可以从这些社交网络下载整个帐户。
account settings
,然后选择download a copy
您的数据。既然您的PC上有任何和所有照片,您必须弄清楚哪些是相同的,相似的等等。我认为this question应该为这个问题提供解决方案。
就个人而言,我投票赞成this method,希望pHash可以在OS X
下编译。如果 pHash 编译并运行,您可以首先通过MD5
,SHA1
或其他任何内容来识别完全匹配。如果没有这样的匹配,则可以运行 pHash 以查看两个图像的接近程度。
我可以(给予足够的时间)编写Linux下bash
内的所有内容。我想这也可以在Mac OS X
下工作,但可能你可以在Cocoa中实现相同的结果甚至更少的编码。
当您发现给定服务中缺少哪些照片时,您最终可以将它们推送到该服务。但我想这里开始另一个问题:)