我需要将图像与各种图像进行比较,如果它们相等则做一些事情(我不需要任何图像识别,我只需要比较两个100%完全相同的图像),好吧,通过搜索stackoverflow我得出结论,我最好的选择是将我的图像编码为base64,然后将字符串与另一个字符串进行比较。
我需要将图像与另一个图像进行比较,然后将另一个图像与另一个图像进行比较,依此类推,每当我找到完美匹配时停止。我的计划是将每个64字符串存储在一个数组中,然后在理论上比较每个项目的目标图像,计划是好的,但是有些事情让我担心,字符串的长度是852754个字符,这意味着它会非常,非常慢。有没有其他方法可以做到这一点?
我甚至愿意将图像保存在我的电脑中,如果这对任何事情都有帮助,那么它们大约有200或300个,它并不是那么多。
答案 0 :(得分:1)
这可以通过散列字符串来完成(当然,这里的熵可能是给定852754长度字符串的问题),类似于MD5 implementation。您还可以设想使用校验和(类似于crc32 function),它应该更快。
使用您最喜欢的方法生成哈希,并在生成一对之后,只需比较哈希(这将更快)。
答案 1 :(得分:0)
这就是我们使用单向散列算法的原因!你应该找到一个库来散列图像数据(例如md5)。您可以轻松存储这些内容并快速比较。
当你有一个md5匹配时,你可以比较数据以确定(这是可能的,但不太可能存在错误匹配的冲突)。
答案 2 :(得分:0)
如果我对您的问题有所了解:您可以在getBase64Image()
元素上使用var myimage = new Image()
方法