Advertisement
Lauda

C# - Compare images using hash

May 1st, 2014
261
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.37 KB | None | 0 0
  1.         public enum CompareImage
  2.         {
  3.             ciOk, ciPixelErr, ciSizeErr
  4.         };    
  5.     public static CompareImage Compare(Bitmap b1, Bitmap b2)
  6.         {
  7.             // Pretpostavljamo da je sve ok na pocetku...iako nece biti!
  8.             CompareImage cp = CompareImage.ciOk;
  9.            
  10.             // Provjeravamo da li su slike iste velicine
  11.             if (b1.Size != b2.Size)
  12.                 cp = CompareImage.ciSizeErr;
  13.             else
  14.             {
  15.                 // Konvertujemo svaku sliku u byte niz
  16.                 ImageConverter ic = new ImageConverter();
  17.                 byte[] btImg1 = new byte[1];
  18.                 byte[] btImg2 = new byte[1];
  19.  
  20.                 btImg1 = (byte[])ic.ConvertTo(b1, btImg1.GetType());
  21.                 btImg2 = (byte[])ic.ConvertTo(b2, btImg2.GetType());
  22.  
  23.                 // Uzimamo hash vrijednosti za svaku sliku
  24.                 SHA256Managed shaHash = new SHA256Managed();
  25.                 byte[] imgHash1 = shaHash.ComputeHash(btImg1);
  26.                 byte[] imgHash2 = shaHash.ComputeHash(btImg2);
  27.  
  28.                 // Poredimo hash vrijednosti
  29.                 for (int i=0; i < imgHash1.Length && i < imgHash2.Length && cp == CompareImage.ciOk; i++)
  30.                     if (imgHash1[i] != imgHash2[i])
  31.                         cp = CompareImage.ciPixelErr;
  32.             }
  33.             return cp;
  34.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement