我想知道将图像用作哈希集/字典键的大小。我也在考虑为此目的使用哈希函数,但我害怕哈希冲突。我需要存储大约数百万张图片。
答案 0 :(得分:2)
您在HashSet或词典中用于键的数据无关紧要,但您需要为其实现GetHashCode
和Equals
方法。
哈希碰撞不是问题。这只是将两个图像放在同一个桶中,并使用Equals
方法找到正确的图像。
答案 1 :(得分:1)
给定Image的字节,可以使用MD5或SHA1等算法为其计算哈希值。
bytes
作为图片的字节数组的示例:
using (var md5 = new System.Security.Cryptography.MD5CryptoServiceProvider())
{
var hash = Convert.ToBase64String(md5.ComputeHash(bytes));
//Store hash
}
答案 2 :(得分:0)
位图图像作为关键字?这不是一个好主意。 Hashset密钥应该尽可能小,否则性能会受到很大影响。
您可以做的是从图像中计算哈希值(例如SHA1),然后将其用作关键字。它只有20个字节,所以应该是一个好的大小,比完整的位图图像要好得多。