transparentes PNG auf Canvas?

Fragen zu Tkinter.
Antworten
Benutzeravatar
Hannes-Spz
User
Beiträge: 123
Registriert: Sonntag 7. August 2005, 22:42

Hi, leutz,

ich weiß nicht, ob mir mir auch heute wieder helfen könnt, aber es geht
um ein Canvas auf dem ein bild liegt, worüber ein transparentes PNG
gelegt werden soll.
mit PhotoImage bekomme ich einen Fehler, dass er PNG nicht auslesen kann.

Es geht im Gro0en und Ganzen eigenlich nur um eine Verdunklung und Aufhellung.

Wenn ihr also irgendwelche Vorschläge, Tipps oder Ideen zum Andersmachen habt,
wär ich euch echt dankbar.
[size=85]"Unsere Situation ist immer die eines schwarzen Mannes der in einem schwarzen Keller einen schwarzen Hut sucht, den es vielleicht gar nicht gibt." Sir Karl R. Popper[/size]
BlackJack

Tkinter kann keine echte Alphatransparenz. Du könntest die Grafik mit PIL "vorberechnen".
BlackJack

Okay, so könnte es gehen:

Code: Alles auswählen

import Tkinter as tk
from PIL import Image, ImageTk

root = tk.Tk()

overlay = Image.open('gfx/mypics/weird3.png')
background = Image.new('RGB', overlay.size, root['background'])
background.paste(overlay, mask=overlay)
image = ImageTk.PhotoImage(background)

label = tk.Label(root, image=image)
label.pack()

root.mainloop()
Es wird ein Hintergrundbild erstellt, was die gleiche Grösse wie das Bild mit der Alphatransparenz hat und mit der Hintergrundfarbe von Tkinter-Widgets gefüllt ist. Und das Bild wird dann darüber gelegt, mit der Alphatransparenz als Maske. Dann braucht man es nur noch in's PhotoImage Format für Tkinter umwandeln.
skypa
User
Beiträge: 97
Registriert: Freitag 5. Januar 2007, 03:13

und wie macht man das?
skypa
User
Beiträge: 97
Registriert: Freitag 5. Januar 2007, 03:13

ups sry, war wohl bisschen in Gedanken... ich wollt wissen wie man das dann dem PhotoImage zuweist, aber das steht ja schon im Code :mrgreen:

Dann kann ich nun doch endlich png-Bilder als Figuren nehmen fürs Schach Game... :shock:
Antworten