Pixelfarbe auslesen

Fragen zu Tkinter.
Antworten
Benutzeravatar
classic
User
Beiträge: 23
Registriert: Mittwoch 3. September 2008, 15:37
Wohnort: Erfurt bzw Lauchröden

Hallo,

ich habe ein erneutes Problem und zwar folgendes:

Wenn ich mit

Code: Alles auswählen

mymap1=Image.open('map.png')
mymap=ImageTk.PhotoImage(mymap1)
ein Bild lade und dieses per

Code: Alles auswählen

canvmap=canv.create_image(0,0,anchor='nw',image=mymap,tag='map')
in die Canvas einfüge, dann kann ich über

Code: Alles auswählen

mymap1.getpixel((x,y))
die Pixelfarbe auslesen.

Wenn ich nun allerdings über dieses Bild zeichne, kann ich die neue Farbe an dieser Stelle nicht auslesen (Was ja auch logisch ist).

Nun stellt sich mir allerdings die Frage, was ich auch noch nirgendwo gefunden habe:
Kann ich die Pixelfarbe auf der Canvas auslesen?

(Ich könnte mir natürlich speichern, wo ich Objekte über das Bild zeichne, da es sich aber um Kreise handelt und ich mit .coords nur die "Randpunkte" herausfinde, reicht mir das nicht.)

MfG
classic
BlackJack

@classic: Das geht AFAIK nicht. Du könntest höchstens mit der `find_overlapping()`-Methode herausfinden, welche Objekte sich an einer bestimmten Stelle befinden und dann das erste davon nach seiner Farbe befragen. Also wenn's ein Kreis ist, halt dessen Farbe und wenn's ein Bild ist, musst Du die Koordinaten umrechnen und bei dem Bild an der entsprechenden Stelle nachsehen. Das ist aber alles ein wenig umständlich.
Benutzeravatar
classic
User
Beiträge: 23
Registriert: Mittwoch 3. September 2008, 15:37
Wohnort: Erfurt bzw Lauchröden

Schade das es nicht geht :(
Allerdings brauche ich die Koordinatenumrechnung nicht, da das Bidl die gesamte canvas ausfüllt ;-) (Wenn ich dich richtig verstanden habe)

Hmm, angenommen ich möchte für die stelle x,y wissen, welche objekte dort sind, dann nutze ich canv.find_overlapping(x,y,x,y), oder?
und dann kann ich ja mit canv.type(ID) rausfinden, ob es das Bild ist, oder ein Kreis.
Stimmt das so weit?

Dann könnte ich mein Problem umständlich umgehen...
Antworten