Seite 1 von 1
Tkinter / Canvas Pixelfarbe auslesen
Verfasst: Dienstag 19. Juni 2012, 20:29
von Night4ngel
Hi Leute,
bin neu hier, habe aber schon ein wenig Erfahrung mit Python, also wenn ihr mir helfen wollt, lasst bitte nicht sowas hören wie: "wieso denn überhaupt"...
Also: Ich bin bereits seit einem Halben Jahr am suchen, stoße aber immer nur auf tote Threads oder auf Lösungen,die mich nicht weiter bringen.
Ich benötige eine Modulerweiterung/Methode oder einfach irgendeine Möglichkeit die aktuelle Farbe eines Pixels auslesen zu können. Ob auf der Canvas oder im Tkinter (wahrscheinlich eher weniger) ist mir egal.
Ich stelle mir folgendes vor:
Code: Alles auswählen
pixelfarbe = c.find_pixelcolor(x, y)
print pixelfarbe
>>> '#00FF00'
also, dass ich in eine Variable schreiben kann, welche Farbe ein spezieller Pixel hat.
Ich habe viel gesucht, und bin auf viele gestoßen, die ganz ähnliche Fragen gestellt haben und zu keiner Lösung gekommen sind.
Ich habe aber auch Beiträge gefunden, in denen Leute eine einfache Hilfe dazu bekommen haben, leider waren die Links immer tot.
Im Moment nutze ich Python 2.7
MfG Night4ngel, thx im Voraus.
Re: Tkinter / Canvas Pixelfarbe auslesen
Verfasst: Dienstag 19. Juni 2012, 23:30
von BlackJack
@Night4ngel: Ich glaube nicht das es eine einfache Lösung gibt. `Canvas` ist Vektorgrafik und keine Pixelgrafik. Du müsstest also herausfinden welche Grafikobjekte sich mit dem Punkt überschneiden und welches davon an oberster Stelle liegt beziehungsweise wenn es „Löcher” in den Objekten gibt, welches an der Stelle die Farbe festlegt. Und dann musst Du bei dem Objekt auch noch feststellen welche Farbe es an der Stelle hat. Ich wüsste nicht wie man das für alle denkbaren Fälle lösen könnte und wie gesagt, einfach ist so eine Lösung dann nicht. Der Anwendungsfall ist nicht wirklich vorgesehen. Also stelle ich Deinen Anwendungsfall doch mal in Frage oder alternativ könnte man auch sagen Canvas ist das falsche Werkzeug für Deinen Anwendungsfall.
Re: Tkinter / Canvas Pixelfarbe auslesen
Verfasst: Mittwoch 20. Juni 2012, 16:56
von Night4ngel
Danke für die schnelle Antwort.
Was würdest du mir denn empfehlen?
Re: Tkinter / Canvas Pixelfarbe auslesen
Verfasst: Mittwoch 20. Juni 2012, 17:05
von BlackJack
@Night4ngel: Das kommt darauf an was Du letztendlich tatsächlich lösen möchtest.
Re: Tkinter / Canvas Pixelfarbe auslesen
Verfasst: Freitag 22. Juni 2012, 12:16
von Night4ngel
Ich möchte, wei schon viele es versucht haben, es schaffen das auf der Canvas kreierte, in eine Datei zu schreiben, um es zu speichern.
Da erschien mir diese Methode am leichtesten, da ich dann einfach jeden Pixel und seine Farbe wieder aus der Datei lesen kann, um ihn auf die Canvas zu malen.
Re: Tkinter / Canvas Pixelfarbe auslesen
Verfasst: Freitag 22. Juni 2012, 12:26
von Hyperion
Night4ngel hat geschrieben:Ich möchte, wei schon viele es versucht haben, es schaffen das auf der Canvas kreierte, in eine Datei zu schreiben, um es zu speichern.
Ich kapiere hier kaum etwas... *wer* kreiert denn *wie* auf dem Canvas etwas? Erstellst Du so eine Art Malprogramm? Oder wie soll ich mir das vorstellen?
Re: Tkinter / Canvas Pixelfarbe auslesen
Verfasst: Freitag 22. Juni 2012, 12:32
von Night4ngel
ja genau sowas

Re: Tkinter / Canvas Pixelfarbe auslesen
Verfasst: Freitag 22. Juni 2012, 12:39
von Hyperion
Night4ngel hat geschrieben:ja genau sowas

Also kommt die Grafik auf dem Canvas durch Benutzereingaben zustande? Ein wenig mehr "Geschwätzigkeit" täte Dir gut

Re: Tkinter / Canvas Pixelfarbe auslesen
Verfasst: Freitag 22. Juni 2012, 12:44
von Night4ngel
also ja.
Stellt euch vor der Benutzer kann mit seiner maus viele Kreise, Vierecke, Striche u.s.w auf ein Canvas malen. in verschiedenen Farben (blablabla)
Und dann möchte er das Bild abspeichern, um es nachher noch weiter zu bearbeiten, also noch was drüber malen oder so.
Wäre mir auch recht, wenn man die Canvas gleich in eine Bmp oder so schreiben kann, das hielt ich aber für eher unwahrscheinlich.
Re: Tkinter / Canvas Pixelfarbe auslesen
Verfasst: Freitag 22. Juni 2012, 12:51
von Hyperion
Man kann das ganze wohl in PostScript exportieren - das sollte man dann sicherlich irgend wie weiterverarbeiten können, bestimmt auch in ein Pixel basiertes Format.
Alternativ greift der aller letzte Kommentar auf
dieser Seite BlackJacks Anregung nach der Suche nach einem geeigneterem Werkzeug auf.
Re: Tkinter / Canvas Pixelfarbe auslesen
Verfasst: Sonntag 24. Juni 2012, 18:30
von Night4ngel
In wiefern kann mir PostScript da weiterhelfen, das verstehe ich nicht ganz...
Aber ich hab mir überlegt, man könnte ja auch einfach beim speichern alle Objekte auslesen und abspeichern. Dann kann man sie beim Öffnen wieder malen, ist halt nur sehr zeitaufwändig-.-
Re: Tkinter / Canvas Pixelfarbe auslesen
Verfasst: Sonntag 24. Juni 2012, 19:09
von Hyperion
Night4ngel hat geschrieben:In wiefern kann mir PostScript da weiterhelfen, das verstehe ich nicht ganz...
Hab ich Dir doch geschrieben!
Hyperion hat geschrieben:... das sollte man dann sicherlich irgend wie weiterverarbeiten können, bestimmt auch in ein Pixel basiertes Format.
Da PostScript an sich ein sehr verbreitetes Format ist, gibt es sicher Libs, die das weiterverarbeiten können und auch in ein Pixel basiertes Format wandeln kann, evtl. kann PIL das sogar. Ansonsten ggf. über ImageMagick o.ä.
Night4ngel hat geschrieben:
Aber ich hab mir überlegt, man könnte ja auch einfach beim speichern alle Objekte auslesen und abspeichern. Dann kann man sie beim Öffnen wieder malen, ist halt nur sehr zeitaufwändig-.-
Dazu brauchst Du doch auch ein Serialisierungsformat - SVG wäre für Vektorgrafiken geeignet; evtl. hat jemand anders sogar schon implementiert? Such doch mal danach (pypi, google, usw.).
Wobei ich mich da nun grad frage, ob Du Dir über Deinen Anwendungsfall im klaren bist... denn wenn Du das wie bisher geschildert handhaben willst, dann widerspricht das umständliche Wandeln und Serialisieren in ein Pixel basiertes Format doch eigentlich der Tatsache, dass Du diese Bilder mit *demselben* Tool wieder laden möchtest!