Wie lassen sich zwei Bilder auf "Gleichheit" prüfen? Die Equals-Eigenschaft des Image/Bitmap-Objekts scheidet in diesem Falls aus: If Bitmap1.Equals(Bitmap2) Then ... Um zwei Bilder miteinander zu vergleichen gibt es mehrere Möglichkeiten: Eine wäre ein Pixel-für-Pixel Vergleich, was jedoch zugegebenermaßen nicht gerade performant ist. Eine andere Möglichkeit wäre, das Bitmap/Image in ein Byte-Array zu konvertieren und den jeweiligen Hash-Wert miteinander zu vergleichen. Und genau das macht nachfolgende Funktion: ''' <summary> ''' Vergleicht zwei Bitmaps miteinader. ''' </summary> ''' <param name="Bitmap1">Bitmap oder Image</param> ''' <param name="Bitmap2">Bitmap oder Image</param> ''' <returns>True, wenn die Bitmaps identisch sind, andernfalls False.</returns> Public Function BitmapsEqual(ByVal Bitmap1 As Bitmap, ByVal Bitmap2 As Bitmap) As Boolean Dim bResult As Boolean = False ' Stimmt die Größe überein... If Bitmap1.Size = Bitmap2.Size Then ' ... Bitmaps in Byte-Array konvertieren With New System.Drawing.ImageConverter() Dim Bytes1 As Byte() = New Byte(0) {} Bytes1 = CType(.ConvertTo(New Bitmap(Bitmap1), Bytes1.[GetType]()), Byte()) Dim Bytes2 As Byte() = New Byte(0) {} Bytes2 = CType(.ConvertTo(New Bitmap(Bitmap2), Bytes2.[GetType]()), Byte()) ' Hash-Wert der beiden Bitmaps berechnen ... Dim SHA As New System.Security.Cryptography.SHA256Managed Dim Hash1 As Byte() = SHA.ComputeHash(Bytes1) Dim Hash2 As Byte() = SHA.ComputeHash(Bytes2) ' ... und miteinander vergleichen If Hash1.Length = Hash2.Length Then bResult = True For i As Integer = 0 To Hash1.Length - 1 If Hash1(i) <> Hash2(i) Then bResult = False Exit For End If Next i End If End With End If Return bResult End Function Dieser Tipp wurde bereits 12.556 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 Neu! sevDTA 3.0 Pro SEPA mit Kontonummernprüfung Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |