如何在浏览器中高效地为索引搜索散列图像

How do I efficiently hash an image for indexed search in the browser?

本文关键字:搜索 索引 图像 浏览器 高效      更新时间:2023-09-26

我正在写一个chrome扩展,从网站保存图像。除了保存文件本身,我还想将图像转换成某种类型的散列。

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

我试过使用这个库,但是它太大了,比我想要的慢一点,而且(表面上)不再支持了。

我也尝试了一些phash算法实现,但据我所知,它们都是为服务器端使用的。我正在使用webpack,它无法捆绑我尝试过的任何库(很可能这是用户错误,我不是webpack pro)。

最后,我尝试将图像转换为base64,但结果是10k+字符,我不清楚这是否适用于不同大小的图像。

我会在javascript中实现一个快速字符串散列。将图像转换为base64,然后对其运行字符串散列:

https://www.npmjs.com/package/non-crypto-hash(这些在节点和浏览器中都可以工作,您可以使用browserify将其引入)

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

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