Vergleichen von zwei Bildern funktioniert nicht

  • VB.NET

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Vergleichen von zwei Bildern funktioniert nicht

    Hey Leute,
    Ich bin gerade am testen der source.unsplash.com/ Seite und wollte ein kleines Test-Programm schreiben das einfach mal ein paar zufällige Bilder herunterlädt aber da die Seite nicht bei jedem neuen Download ein neues Bild liefert wollte ich vergleichen ob das aktuell heruntergeladene Bild das gleiche wie das zueltzt heruntergeladene ist aber das klappt irgendwie nicht.
    Hier mein Code:

    VB.NET-Quellcode

    1. Private Sub GetImages_b_Click(sender As Object, e As EventArgs) Handles GetImages_b.Click
    2. Dim lastImage As Image = New Bitmap(1, 1)
    3. While amount_tb.Text >= 1
    4. While web.IsBusy
    5. Application.DoEvents()
    6. End While
    7. Dim c_tick As Long = Now.Ticks
    8. web.DownloadFileAsync(New Uri("https://source.unsplash.com/random"), My.Computer.FileSystem.SpecialDirectories.MyPictures & "\Unsplash\" & c_tick & ".jpeg")
    9. While web.IsBusy
    10. Application.DoEvents()
    11. End While
    12. Dim nowImage As Image = Image.FromFile(My.Computer.FileSystem.SpecialDirectories.MyPictures & "\Unsplash\" & c_tick & ".jpeg")
    13. If nowImage.Equals(lastImage) Then
    14. My.Computer.FileSystem.DeleteFile(My.Computer.FileSystem.SpecialDirectories.MyPictures & "\Unsplash\" & c_tick & ".jpeg")
    15. Else
    16. lastImage = nowImage
    17. amount_tb.Text -= 1
    18. End If
    19. End While
    20. End Sub

    Wobei amount_tb eine textbox ist wo die Anzahl (in Zahlen) ,wieviele Bilder heruntergeladen werden sollen, drin steht.
    Ja ich weiß man hätte das besser mit Integer und so lösen können aber das ist ja erstmal nur ein Test.

    Ich habe auch schon probiert beide Bilder hashen aber das hat auch nicht geklappt, es kamen immer komplett unterschiedliche hash-codes bei raus.:

    VB.NET-Quellcode

    1. If lastImage.GetHashCode = nowImage.GetHashCode Then
    2. My.Computer.FileSystem.DeleteFile(My.Computer.FileSystem.SpecialDirectories.MyPictures & "\Unsplash\" & c_tick & ".jpeg")
    3. Else
    4. lastImage = nowImage
    5. amount_tb.Text -= 1
    6. End If


    Jemand eine Idee wie ich diese Bilder vergleichen kann oder eine bessere Möglichkeit zu checken das man keine Bilder zwei mehr hat?
    Schonmal danke im Vorraus :)
    @Du vergleichst Äpfel mit Birnen.
    Dein Vergleich testet, ob beide Bilder denselben Speicher belegen, also die identische Instanz sind, klar, dass dieser Vergleich stets False zurückbringt.
    Um genau zu sein, solltest Du die Bilder pixelweise vergleichen.
    Der Hash-Code hat folgenden Haken: Sind beide Codes verschieden, kannst Du davon ausgehen, dass die Bilder verschieden sind, die Umkehrung gilt nicht :!:
    D.h., zwei Bilder gleichen Hash-Coes können auch verschieden sein.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!