ハッシュセット/辞書キーとして使用する画像のサイズを知りたいです。この目的でハッシュ関数を使用することも考えていますが、ハッシュの衝突が心配です。約100万枚の画像を保存する必要があります。
質問する
1225 次
3 に答える
2
HashSet または Dictionary のキーにどのデータを使用するかは問題ではありませんが、そのためのGetHashCode
およびEquals
メソッドを実装する必要があります。
ハッシュの衝突は問題ではありません。これは、2 つの画像を同じバケットに入れ、Equals
メソッドを使用して適切な画像を見つけるだけです。
于 2012-12-17T14:27:55.543 に答える
1
キーとしてのビットマップ画像?それはあまり良い考えではありません。ハッシュセットキーはできるだけ小さくする必要があります。そうしないと、パフォーマンスが大幅に低下します。
できることは、画像からハッシュ値(SHA1など)を計算し、それをキーとして使用することです。たった20バイトなので、フルビットマップイメージよりもはるかに優れた適切なサイズになるはずです。
于 2012-12-17T14:29:48.633 に答える
1
画像のバイトを指定すると、MD5 や SHA1 などのアルゴリズムを使用してそのハッシュを計算できます。
bytes
あなたの写真のバイト配列である例:
using (var md5 = new System.Security.Cryptography.MD5CryptoServiceProvider())
{
var hash = Convert.ToBase64String(md5.ComputeHash(bytes));
//Store hash
}
于 2012-12-17T14:32:14.643 に答える