位图图像作为字典键

时间:2012-12-17 14:24:13

标签: c# image-processing bitmap

我想知道将图像用作哈希集/字典键的大小。我也在考虑为此目的使用哈希函数,但我害怕哈希冲突。我需要存储大约数百万张图片。

3 个答案:

答案 0 :(得分:2)

您在HashSet或词典中用于键的数据无关紧要,但您需要为其实现GetHashCodeEquals方法。

哈希碰撞不是问题。这只是将两个图像放在同一个桶中,并使用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个字节,所以应该是一个好的大小,比完整的位图图像要好得多。