Bilder vergleichen

Status
Nicht offen für weitere Antworten.

Flocke

Mitglied
Hallo allerseits.
Habe Momentan ein Problem mit dem Vergleichen von Bildern. Und zwar meine Bilder sind auf JLabels. Die JLabels selbst haben keine Namen, da die Bilder durch eine Schleife automatisch angelegt und in einem Array abgespeichert werden. Zusätzlich habe ich ein wilkürliches Bild auf einem gesondertem JLabel (mit Namen) abgespeichert. Ich möchte nun das Array nach diesem Bild durchsuchen. Ist es im Array, so soll eine Meldung erfolgen.
Mit
Code:
 if (gesuchtesBild.equals(bildArray[x]))
 System.out.println("Das Bild liegt im Array");;
funktioniert es nicht. Hab' auch schon mit
Code:
if((gesuchtesBild.getIcon()).equals(bildArray[x].getIcon())) 
System.out.println("Das Bild liegt im Array");
versucht. Aber es kommt weder eine Fehlermeldung, noch gibt es weitere Reaktionen.
Kennt jemand einen Rat?
Danke
 

André Uhres

Top Contributor
Die standard Methode "equals()" gibt nur dann "true" zurück, wenn beide Referenzen auf dasselbe Objekt zeigen.
Das "willkürliche Bild" müsste dann also physisch ein Objekt aus dem Array sein.
 

Flocke

Mitglied
Danke Andre.
Es ist aber bei mir eindeutig nicht der Fall und ich kriege es so auch nicht hin. Ich bastle nämlich an einem Spiel bei dem eine Reihe von unterschidlichen Zeichen geraten werden soll. Als Antwort auf den Rateversuch wird dann entweder ein Bild für "richtiges Zeichen am richtigen Ort", "Zeichen kommt gar nicht vor" oder "das Zeichen ist richtig, aber der Ort ist verkehrt" im JPanel ausgegeben. Ich möchte nun, dass, wenn das Symbol für "richtiges Zeichen am richtigen Ort" das gesammte Feld ausfüllt, eine Meldung, wie "Sie haben gewonnen" kommt.
Weiß jemand, wie ich es bewerkstelligen kann?
 

André Uhres

Top Contributor
Du könntest einen Bilder-Katalog anlegen, wobei das "Key" zu
den Bildern einfach eine laufende Nummer ist.
Um das willkürliche Bild anzuzeigen, nimmst du einfach ein
Bild aus dem Katalog und vermerkst zusätzlich die entsprechende Nummer des Bildes.
Das Array mit den zu ratenden Bildern legst du so an, dass es nur die Nummern der Bilder
enthält und nicht die Bilder selbst.
Du vergleichst dann also keine Bilder mehr, sondern einfach nur die Bild-Nummern.
 

thE_29

Top Contributor
Du überschreibst dir entweder die Klasse ICON oder IMAGE mit MyICON oder MyIMAGE und merkst dir einen Schlüssel zu dem Bild (statischen Counter, oder sonstiges)

Dann baust dir noch ne equals Methode oder fragst gleich auf die Keys ab und schwups wups gehtz ;>
 
G

Gast

Gast
Entschuldigung das ich die Leiche hier schände, aber die Suche gab nicht mehr her und es scheint auch genau zu meiner Frage zu passen.
Wenn doch nicht, dann bitte nicht hauen :)

Kann man Bilder mit equals() vergleichen? Oder muss man das immer über umwege machen.
Denn aus dem Thread hier kann ich das nicht so direkt rauslesen ob es generel nicht geht oder ob es nun am speziellen Fall hier liegt.
 

Azrahel

Bekanntes Mitglied
André Uhres hat gesagt.:
Die standard Methode "equals()" gibt nur dann "true" zurück, wenn beide Referenzen auf dasselbe Objekt zeigen.
Das "willkürliche Bild" müsste dann also physisch ein Objekt aus dem Array sein.

*mal den Rohrstock holen geht* :bae: Ich interpretier das als es geht, unter bestimmten Umständen... wobei ich dann eher mit == vergleichen würd ???:L
 

Marco13

Top Contributor
BufferedImage a = ImageIO.load("einBild.jpg");
BufferedImage b = ImageIO.load("einBild.jpg");
BufferedImage c = a;

Hier gilt
a == c
und afaik auch
a.equals(c);
aber
a.equals(b)
gilt definitiv NICHT - obwohl ja "zweimal das gleiche Bild" geladen wurde. Man kann mit == (und hier: equals) nur überprüfen, ob die Referenzen gleich sind.

Um Bilder wirklich nach dem Bild-Inhalt zu vergleichen ist mehr Arbeit nötig. Um festzustellen, dass a und b "eigentlich" das gleiche Bild sind, müsste man (im einfachsten Fall) die Bilder Pixel-Weise vergleichen.
 
G

Gast

Gast
Naja, weil ich hab ein Objekt in dem zwei Bilder drin sind(ist ne Spielkarte).
Ich habe 3 Karten welche verdeckt ausgeteilt werden.
Ziel ist es, die Herz-Dame aufzudecken. Und da hab ich dann ein Vergleichsobjekt angelegt. Doch vergleichen lässt es sich mit equals nicht. Im Objekt sind nur die Deckseite und das Motiv drin.
Ich hab das dann zwar mit einer getMotiv Methode gelöst(so dass die Motive und nicht die Objekte verglichen werden), aber wollte eben wissen ob die Bilder im Objekt generel nicht verlgiechbar sind.
Der Lehrer wusste auch keine Antwort darauf warum die Objekte immer als false verglichen werden, auch wenn absolut das selbe drin ist.

Und mit == ging das auch nicht wirklich. Hatte ich aus Langeweile auch probiert.

Wenn ich es nicht direkt mit equals vergleichen kann wenn ich zwei Objekte mit gleichem Inhalt erzeuge, warum geht es dann wenn ich das Objekt karte2 = karte1 setze?
Dann ist karte2 doch auch mit dem selben Inhalt ausgestattet.
 
G

Gast

Gast
Sry für den Doppelpost.
Kann aber als Gast ja nicht editieren :D

Hab mir auch schon gedacht das man sonst Pixel für Pixel vergleichen müsste.
Zum Spass sogar ein 1x1 Pixel in das Objekt in bmp Format gelegt(dort sind ja wirklich einzeln gespeichert, oder?) und es funktionierte auch nicht.

Warum gilt dann eigentlich nicht a.equals(b)?
Ist das einfach eine "Schwäche" von Java oder hat das einen Sinn?
Mein Lehrer hat mich damit beauftragt das herauszufinden. :)

Jedenfalls schon mal dake für die bisherigen Antworten :)
 

WieselAc

Top Contributor
Wenn du ehe ein Objekt mit anlegst in dem du beiden Bilder (Vor und Rückseite) für jede Karte vorhälst, dann pack doch noch einen Key hinzu zB.: Zahlen 1-32 dann kriegt Karo 7 z.B. die 1 zugeordnet und wenn du zwei Objekte vergleichst prüfst du einfach die Gleichheit der Keys.

Also weg vom Bild, hinzum Karten Objekt!
 

André Uhres

Top Contributor
Azrahel hat gesagt.:
.. wobei ich dann eher mit == vergleichen würd ???:L
Object#equals:
x.equals(y) ist gleichwertig mit x == y
Aus der API Dokumentation:
for any non-null reference values x and y, this method returns true if and only if x and y
refer to the same object (x == y has the value true).
 
G

Gast

Gast
Na, das Applet funktioniert soweit schon.
Mich interessiert nun der genaue Grund warum denn nun a.equals(b) wie Marco es geschrieben hat nicht gilt.
 

WieselAc

Top Contributor
Warum a.equals(b) ist?

Weil die equals Methode nicht in der Art überschrieben wurde. Es hängt ja immer davon ab was man machen will, was man unter gleich versteht.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Bilder vergleichen AWT, Swing, JavaFX & SWT 4
MiMa Fonts, Icons, Bilder in JavaFX Anwendung AWT, Swing, JavaFX & SWT 5
F Bilder zu ausführbarer Jar-Datei hinzufügen AWT, Swing, JavaFX & SWT 5
G JPanel per Drag and Drop JButtons und Bilder ablegen AWT, Swing, JavaFX & SWT 1
G JPanel mit JButtons und Bilder AWT, Swing, JavaFX & SWT 5
Linjutsu Den Inhalten aus einer ArrayList Bilder zuweisen (Kartenspiel) AWT, Swing, JavaFX & SWT 8
M Swing Bilder in Swing anzeigen AWT, Swing, JavaFX & SWT 9
S AffineTranformation Bilder verschwinden von Anzeige bei Pan, Zoom AWT, Swing, JavaFX & SWT 6
G Bilder in javafx Project AWT, Swing, JavaFX & SWT 11
N Bilder auf Button einfügen und mehrmals ändern (ein Button, mehrere ActionListener) AWT, Swing, JavaFX & SWT 2
N eclipse Java, bilder benutzten Funktioniert nicht AWT, Swing, JavaFX & SWT 6
Kirby.exe Bilder in GUI einfügen AWT, Swing, JavaFX & SWT 8
T Bilder bei einem JFrame einfügen AWT, Swing, JavaFX & SWT 4
K JLabel mit Bilder im nicht initialisierten JPanel hinzufügen AWT, Swing, JavaFX & SWT 5
L Bilder werden in exportierter Datei nicht geladen AWT, Swing, JavaFX & SWT 6
C Bilder so einbinden, dass sie sich ändern AWT, Swing, JavaFX & SWT 6
J Bilder aus dem SceneBuilder werden in der Jar nicht dargestellt AWT, Swing, JavaFX & SWT 4
TheWhiteShadow JavaFX Bilder werden ungewollt Skaliert AWT, Swing, JavaFX & SWT 1
B JavaFX Bilder in einem Gewissen bereich halten AWT, Swing, JavaFX & SWT 1
J Bilder proportional verkleiner AWT, Swing, JavaFX & SWT 12
E Bilder skalieren AWT, Swing, JavaFX & SWT 4
DaCrazyJavaExpert Swing Bilder überlagern AWT, Swing, JavaFX & SWT 19
A Bilder als Hintergrund AWT, Swing, JavaFX & SWT 2
@SupressWarnings() JavaFX Bilder in executable jar laden AWT, Swing, JavaFX & SWT 5
Sugan JavaFX Bilder drucken AWT, Swing, JavaFX & SWT 0
K JPanel Bilder bei Windows nicht darstellbar AWT, Swing, JavaFX & SWT 6
Sugan Java FX Verzeichnisüberwachung -> Bilder auf GUI anzeigen AWT, Swing, JavaFX & SWT 4
E AWT Bilder als "Array" abspeichern. AWT, Swing, JavaFX & SWT 4
MrSnake Bilder aus Unterordner einfügen AWT, Swing, JavaFX & SWT 2
I 2D-Grafik Bilder Eingefügt, button jetzt im Hintergrund AWT, Swing, JavaFX & SWT 2
C SWT Treeview mit Bilder im Label verändert Expanded Icon AWT, Swing, JavaFX & SWT 1
M Swing JTextPane, Bilder und Text-flow AWT, Swing, JavaFX & SWT 2
A Mit dem Scene Builder eine Collage erstellen (Bilder beziehen aus Flickr) AWT, Swing, JavaFX & SWT 1
thet1983 JTable Bilder AWT, Swing, JavaFX & SWT 6
GenerationLost Bilder an bestimmten Platz einfügen/Objekte visualisieren AWT, Swing, JavaFX & SWT 1
F Bilder in jFrame einfügen AWT, Swing, JavaFX & SWT 3
J Bilder als Variable an einem Objekt speichern AWT, Swing, JavaFX & SWT 3
I Swing Bilder werden nach Export nicht angezeigt AWT, Swing, JavaFX & SWT 1
D 2D-Grafik Bilder anzeigen AWT, Swing, JavaFX & SWT 4
J Bilder auf JPanel (im JScrollPane) nacheinander laden AWT, Swing, JavaFX & SWT 0
vodkaz JFrame,Bilder und Zeitverzögerung AWT, Swing, JavaFX & SWT 2
A Swing Bilder werden nicht angezeigt AWT, Swing, JavaFX & SWT 3
I SWT Bilder, bzw. ein einzelnes Bild AWT, Swing, JavaFX & SWT 6
M Bilder zeichnen, NullPointer Exception AWT, Swing, JavaFX & SWT 3
Xbody 2D-Grafik JavaFX Bilder transformieren AWT, Swing, JavaFX & SWT 2
C 2D-Grafik Steganographie - Verschlüsselung von Dateien in Bildern - Bilder zeigen schwarze Rechtecke AWT, Swing, JavaFX & SWT 13
P Durch Bilder Scrollen AWT, Swing, JavaFX & SWT 2
F Bilder werden nicht in's Array geladen AWT, Swing, JavaFX & SWT 4
K Bilder übereinanderlegen AWT, Swing, JavaFX & SWT 11
windl Querstreifen beim Bilder malen und anpassen an neue CPU AWT, Swing, JavaFX & SWT 12
V Fertige Komponente zum Anzeigen mehrerer Bilder AWT, Swing, JavaFX & SWT 5
Karuka 2D-Grafik Bilder in GridLayout einfügen AWT, Swing, JavaFX & SWT 7
J Bilder in ausführbare jar einbinden AWT, Swing, JavaFX & SWT 7
J Swing Bilder anzeigen in Gridlayout AWT, Swing, JavaFX & SWT 11
H 2D-Grafik Bilder laden ist nicht zuverlässig AWT, Swing, JavaFX & SWT 3
F Bilder ineinander kopieren AWT, Swing, JavaFX & SWT 3
P Bilder verkleinern AWT, Swing, JavaFX & SWT 2
C SWT Mehrere Bilder in GUI laden AWT, Swing, JavaFX & SWT 5
Furtano AWT Skalierung mehrerer Bilder / Histogramme im Fenster AWT, Swing, JavaFX & SWT 4
Furtano AWT mehrere Bilder in einen Frame zeichnen + Layout Manager AWT, Swing, JavaFX & SWT 10
T 2D-Grafik Statisches Hintergrundbild, dynamische Bilder drüber AWT, Swing, JavaFX & SWT 2
C Zwei Bilder übereinander legen AWT, Swing, JavaFX & SWT 1
L [SWT] Daten und Bilder drucken AWT, Swing, JavaFX & SWT 2
S Flickr Bilder in Gui Oberfläche AWT, Swing, JavaFX & SWT 21
L Bilder im JPanel als Hintergrund - Swing AWT, Swing, JavaFX & SWT 2
K Bilder nacheinander einfügen AWT, Swing, JavaFX & SWT 3
H Bilder auf Buttons per Klick tauschen ( Puzzle ) AWT, Swing, JavaFX & SWT 8
H Bilder in Array zufällig anordnen AWT, Swing, JavaFX & SWT 4
P 2D-Grafik Viele Bilder zu einem Video AWT, Swing, JavaFX & SWT 3
J Vergleicher zweier Bilder AWT, Swing, JavaFX & SWT 2
C zwei Bilder nacheinander anzeigen AWT, Swing, JavaFX & SWT 2
L Swing Bilder über andere Bilder laden AWT, Swing, JavaFX & SWT 3
J Bilder überlappen AWT, Swing, JavaFX & SWT 18
P Bilder werden nach Änderung nicht angezeigt AWT, Swing, JavaFX & SWT 15
3 2D-Grafik Rechtecke auf Bilder legen und auslesen AWT, Swing, JavaFX & SWT 4
M Mehrere Bilder auf einmal anzeigen AWT, Swing, JavaFX & SWT 9
P Swing html mit bilder drin AWT, Swing, JavaFX & SWT 12
F Nicht alle Bilder werden angezeigt AWT, Swing, JavaFX & SWT 2
E Bilder auf JFrame AWT, Swing, JavaFX & SWT 7
R Bilder über URL einfügen AWT, Swing, JavaFX & SWT 4
F Applet zeigt Bilder nicht an AWT, Swing, JavaFX & SWT 5
M FileChooser Bilder auswählen AWT, Swing, JavaFX & SWT 8
G Swing Bilder zeichnen AWT, Swing, JavaFX & SWT 28
L Swing Bilder im Icons-Ordner AWT, Swing, JavaFX & SWT 4
U Bilder in Jar werden nicht gefunden AWT, Swing, JavaFX & SWT 5
S SWT Canvas: Flackernde Bilder AWT, Swing, JavaFX & SWT 3
E Swing JTextPane Inhalt(Text und Bilder) als HTML text bekommen AWT, Swing, JavaFX & SWT 3
E AWT Bilder und Java AWT, Swing, JavaFX & SWT 11
P Bilder einfügen AWT, Swing, JavaFX & SWT 4
D Swing JEditorPane mit HTML aber ohne Bilder AWT, Swing, JavaFX & SWT 3
S Swing Kleine Bilder in Panel einfügen AWT, Swing, JavaFX & SWT 13
A AWT Bilder als Link verwenden? AWT, Swing, JavaFX & SWT 11
T SWT Wie Bilder aus JAR-Dateien einbinden? AWT, Swing, JavaFX & SWT 12
S Bilder aus der Google Book Search API auslesen AWT, Swing, JavaFX & SWT 3
J Bilder in JScrollPane zentrieren AWT, Swing, JavaFX & SWT 5
M Bilder in einem Textfeld darstellen AWT, Swing, JavaFX & SWT 2
N Bilder aus Infos generieren lassen. Welches Framework? AWT, Swing, JavaFX & SWT 8
A SWT Bilder resizen AWT, Swing, JavaFX & SWT 9
A Swing Bilder in JFrame einfügen AWT, Swing, JavaFX & SWT 2
Cloud Einige Bilder werden nicht geladen AWT, Swing, JavaFX & SWT 11

Ähnliche Java Themen


Oben