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.537 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 sevOutBar 4.0 Vertikale Menüleisten á la Outlook Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. |
||||||||||||||||
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. |