Hallo!
Ich würde gerne von einem .gif-Bild (oder einem anderen Format), das ich auf einem Label oder einem Canvas darstelle, über einen bestimmten Bereich wissen, ob dieser transparent ist. (Notfalls reicht auch eine pixelweise Abfrage.)
Nur wie mach ich das? Nur mit Tkinter wird das wohl nicht gehen, also
denke ich ,dass ich mir das irgedwie mit der PIL basteln muss, nur hab ich damit sogut wie keine Erfahrungen...
Bei gif-Bildern müsste ich ja, wenn ich die Position richtig errechnet habe, ja nur die Farbe mit der Tranzparenzfarbe vergleichen, oder?
Habt ihr vlt. ein paar Tips oder Links für mich?
mfg, jj
Transparente Bildpartien erkennen
-
- User
- Beiträge: 419
- Registriert: Sonntag 3. September 2006, 15:11
- Wohnort: in den weiten von NRW
- Kontaktdaten:
Einzelne Pixel ist einfach:
Für Bereiche könnte man die `histogram()`-Methode bemühen. Einfach das Histogramm des Bereichs berechnen und dann schauen, ob die Anzahl der Pixel insgesamt mit der am Index der transparenten Farbe übereinstimmt.
Auswahl des Bereichs kann man entweder durch ausschneiden eines rechteckigen Bereichs machen und auf dem dann das Histogramm berechnen, oder man kann der Histogram-Methode auf dem Ursprungsbild eine entsprechende Maske als Argument übergeben.
Code: Alles auswählen
from PIL import Image
def main():
image = Image.open('gfx/logo.gif')
transparent = image.info['transparency']
if image.getpixel((0, 0)) == transparent:
print 'Ich durchschaue Dich! :-)'
Auswahl des Bereichs kann man entweder durch ausschneiden eines rechteckigen Bereichs machen und auf dem dann das Histogramm berechnen, oder man kann der Histogram-Methode auf dem Ursprungsbild eine entsprechende Maske als Argument übergeben.
-
- User
- Beiträge: 419
- Registriert: Sonntag 3. September 2006, 15:11
- Wohnort: in den weiten von NRW
- Kontaktdaten:
Hi BlackJack,
Danke erstmal für den schnellen Tip. Das mit dem Histogram bzw. wie ich aus meinen Pixeldaten eine Maske für das Histogram bekomme, hab ich noch nicht so ganz raus. Muss ich da per PIL ein gleichgroßes Bild erstellen und das als Maske für das histogram nehmen? Ich bin mit meinem Code eh noch nicht ganz da, wo ich die Sache brauche, aber ich denke ich werd mich noch etwas mehr in die PILDoku einlesen müssen, oder ich teste nur einen Rand mit ein paar Punkten, würde eigentlich auch reichen...
Naja, wenn ich was hab werd ich mich wieder melden!
Danke erstmal für den schnellen Tip. Das mit dem Histogram bzw. wie ich aus meinen Pixeldaten eine Maske für das Histogram bekomme, hab ich noch nicht so ganz raus. Muss ich da per PIL ein gleichgroßes Bild erstellen und das als Maske für das histogram nehmen? Ich bin mit meinem Code eh noch nicht ganz da, wo ich die Sache brauche, aber ich denke ich werd mich noch etwas mehr in die PILDoku einlesen müssen, oder ich teste nur einen Rand mit ein paar Punkten, würde eigentlich auch reichen...
Naja, wenn ich was hab werd ich mich wieder melden!