如何在浏览器中有效地散列图像以进行索引搜索?

时间:2016-09-13 01:55:58

标签: javascript image

我正在编写一个Chrome扩展程序,用于保存网站中的图像。除了保存文件本身,我还想把图像变成某种类型的哈希。

目标是索引数据库中的图像,以便我可以轻松确定图像是否重复(与大小无关,即缩略图和全尺寸图像将被视为重复)。我并不是真的担心会有轻微差异的图像(除了尺寸)。

我曾尝试使用this library,但它很大,比我想要的慢一些,并且(表面上)不再支持了。

我也尝试了许多phash算法实现,但尽管我可以说,它们都是用于服务器端的。我正在使用webpack,它无法捆绑我尝试的任何lib(很可能这是用户错误,我不是webpack-pro)。

最后,我尝试converting the image to base64,但结果是10k +字符,而且我不清楚这适用于不同大小的图像。

1 个答案:

答案 0 :(得分:1)

我只是在javascript中实现快速字符串哈希。将图像转换为base64,然后在其上运行字符串哈希:

https://www.npmjs.com/package/non-crypto-hash (这些在节点和浏览器中都可以工作,你可以使用browserify来实现)

或您可以转换的算法: http://landman-code.blogspot.ca/2008/06/superfasthash-from-paul-hsieh.html

假设您不需要加密安全哈希,这些可能是您最快的选择。