使用ImageMagick使用图像数据库比较图像?

时间:2018-12-21 09:09:14

标签: php imagemagick

我知道我可以使用{{1}的compareImages( Imagick $compare , int $metric )函数比较两个图像(以检查它们在视觉上是否相同,而不是检查它们的文件格式,EXIF等)。 }} PHP库(也可以使用其他几种编程语言)。

在PHP中比较2张图片的示例代码:

ImageMagick

但是要比较成千上万张图像,此功能似乎效率很低,因为它只能一一比较。有什么功能可以用来为图像制作指纹(类似的东西),以便我可以轻松地在数据库中搜索?

我能想到的方法:

  1. 将图像转换为Base64字符串
  2. 从每个图像中获取少量样本像素,将颜色存储在数据库中(但此方法不准确)
  3. 使用图像识别库(类似于机器学习)为每个图像添加一些标签,然后按标签搜索(此方法也不准确)
  4. (还有什么?)

欢迎所有建议。

p.s。不需要使用PHP编程语言。

1 个答案:

答案 0 :(得分:0)

您可以使用getImageSignature函数,该函数将返回一个包含文件的SHA-256哈希的字符串。

因此,要么遍历所有图像,然后将图像签名添加到图像数据库中,要么仅在执行的每个比较中添加签名。

希望有帮助。