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