我的用户正在将图像上传到我的网站,我想首先向他们提供已经上传的图像。我的想法是 1. 为每个现有图像创建某种图像“散列” 2. 创建新上传图像的散列并将其与数据库中的其他图像进行比较
我找到了一些有趣的解决方案,例如http://www.pureftpd.org/project/libpuzzle或http://phash.org/等,但他们遇到了一个或多个问题
- 他们需要一些非标准的 PHP 扩展(或者根本不在 PHP 中)——这对我来说没问题,但我想将它创建为我流行的 CMS 的插件,它在许多托管环境中使用,不受我的控制。
- 他们正在比较两张图片,但我需要一对多(例如数千张)进行比较,并且一张一张地进行比较会非常无效/缓慢......
我可以只找到非常相似的图像(例如不同的大小、重新保存的 jpg 或不同的 jpg 压缩系数)。
我得到的唯一想法是将图像大小调整为例如 5px*5px* 256 色,创建它的字符串表示,然后找到相同的。但我猜想即使只有两张大小不同的相同图像,它也可能会在颜色上产生微小的差异,所以只找到 100% 相同的图像是没有用的。
所以我需要一些好的图像字符串表示格式,而不是可以与一些 SQL 函数一起使用来找到类似的,或者其他一些好的方法。例如 phash 创建感知散列,所以当两个数字接近时,图像也应该接近,所以我只需要找到最近的距离。但它又是外部库。
有什么简单的方法吗?