Seite 1 von 1

transparentes PNG auf Canvas?

Verfasst: Samstag 18. März 2006, 17:55
von Hannes-Spz
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.

Verfasst: Samstag 18. März 2006, 22:27
von BlackJack
Tkinter kann keine echte Alphatransparenz. Du könntest die Grafik mit PIL "vorberechnen".

Verfasst: Sonntag 19. März 2006, 23:53
von 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.

Verfasst: Freitag 2. Februar 2007, 11:22
von skypa
und wie macht man das?

Verfasst: Freitag 2. Februar 2007, 12:29
von BlackJack
Wie macht man was?

Verfasst: Freitag 2. Februar 2007, 13:11
von skypa
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: