Supportnet / Forum / Anwendungen(Java,C++...)
Bilder vergleichen VB6
Frage
Hallo!
Ich möchte gerne mit VB6 Bilder vergleichen. Doch wenn ich zum Beispiel in zwei verschiedenen PictureBoxs das gleiche Bild einfüge und dann mit dem Code
If Picture1.Picture = Picture2.Picture Then ...
beide Bilder vergleichen lasse, dann meint der Computer es wären zwei verschiedene Bilder.
Was kann ich da machen?
(Danke im vorraus!)
Antwort 1 von misterUE
Versuch mal:
If Picture1.Image = Picture2.Image Then ...
gehts?
If Picture1.Image = Picture2.Image Then ...
gehts?
Antwort 2 von Rangoo
Wenn du eines der Bilder zur Laufzeit gleich dem anderen setzt, dann müsste es mit
If Picture1.Picture = Picture2.Picture Then
eigentlich funktionieren. Legst du die Bilder als Dateien fest, funktioniert es nicht.
Ich befürchte fast, dir wird nichts anderes übrig bleiben, als ein "indirekter" Vergleich der Bilder. Du vergleichst dann Höhe, Breite und ausgewählte Pixel.
If Picture1.Picture = Picture2.Picture Then
eigentlich funktionieren. Legst du die Bilder als Dateien fest, funktioniert es nicht.
Ich befürchte fast, dir wird nichts anderes übrig bleiben, als ein "indirekter" Vergleich der Bilder. Du vergleichst dann Höhe, Breite und ausgewählte Pixel.
Antwort 3 von Rangoo
Hier mal ein Probecode:
Du benötigst ein Label "Label1", die Picture-Boxen "Picture1" und "Picture2", in denen du dein Bild jeweils unterbringst, und Image1 und Image2.
In die Form_Load fügst du folgenden Code ein:
Image1.Picture = Picture1.Picture
Image2.Picture = Picture2.Picture
t0 = True
If Image1.Width = Image2.Width And Image1.Height = Image2.Height Then
xmax = Image1.Width
ymax = Image1.Height
x = 0
y = 0
t0 = False
Do
x = x + 1
If x > xmax Then x = 1
If x = 1 Then y = y + 1
t1 = Picture1.Point(x, y)
t2 = Picture2.Point(x, y)
If t1 <> t2 Then t0 = True
Loop Until t0 = True Or (y = ymax And x = xmax)
End If
If t0 = True Then Label1.Caption = "Nicht identisch"
If t0 = False Then Label1.Caption = "Identisch"
Ganz wichtig: Ändere in den Eigenschaften der Form und der beiden PictureBoxen beim ScaleMode den Wert in Pixel! Sonst hängst du etwas länger vor der Kiste...
Übrigens erkennt die Methode auch verschiedene Dateinamen mit gleichem Inhalt als identisches Bild an. Das nur am Rande.
Du benötigst ein Label "Label1", die Picture-Boxen "Picture1" und "Picture2", in denen du dein Bild jeweils unterbringst, und Image1 und Image2.
In die Form_Load fügst du folgenden Code ein:
Image1.Picture = Picture1.Picture
Image2.Picture = Picture2.Picture
t0 = True
If Image1.Width = Image2.Width And Image1.Height = Image2.Height Then
xmax = Image1.Width
ymax = Image1.Height
x = 0
y = 0
t0 = False
Do
x = x + 1
If x > xmax Then x = 1
If x = 1 Then y = y + 1
t1 = Picture1.Point(x, y)
t2 = Picture2.Point(x, y)
If t1 <> t2 Then t0 = True
Loop Until t0 = True Or (y = ymax And x = xmax)
End If
If t0 = True Then Label1.Caption = "Nicht identisch"
If t0 = False Then Label1.Caption = "Identisch"
Ganz wichtig: Ändere in den Eigenschaften der Form und der beiden PictureBoxen beim ScaleMode den Wert in Pixel! Sonst hängst du etwas länger vor der Kiste...
Übrigens erkennt die Methode auch verschiedene Dateinamen mit gleichem Inhalt als identisches Bild an. Das nur am Rande.

