PIL: Flächen füllen
Verfasst: Mittwoch 17. Oktober 2007, 10:51
Hallo,
ich habe ein kleines Problem mit der Image-Library (PIL). Und zwar möchte flogende Grafik oberhalb des Graphen mit weißer Farbe füllen.

Das Ergebnis soll dann so aussehen:

Mein Ansatz zu der Lösung war jeden Pixel von (1,1) ausgehend rekursiv auf seine Farbe zu überprüfen und ggf. färben. Hier ist der Code dazu:
Das Problem ist nur, dass das Ganze für das Bild (400x200) schon ca. 15 Sekunden dauert. Ich möchte das Bild aber eigentlich mit mindestens 1200x600 Pixeln darstellen. Das dauert dann aber definitiv zu lange. Gibt es da nicht eine einfachere Lösung. Die gängigen Bildbearbeitungsprogramme machen das doch auch in Bruchteilen von Sekunden.
Im PIL-Handbuch bin ich nicht fündig geworden!
Wäre dankbar für Vorschläge und Ideen.
Gruß, Martin
ich habe ein kleines Problem mit der Image-Library (PIL). Und zwar möchte flogende Grafik oberhalb des Graphen mit weißer Farbe füllen.

Das Ergebnis soll dann so aussehen:

Mein Ansatz zu der Lösung war jeden Pixel von (1,1) ausgehend rekursiv auf seine Farbe zu überprüfen und ggf. färben. Hier ist der Code dazu:
Code: Alles auswählen
imageWidth = 400
imageHeight = 200
def fillWhite(im,x,y):
global imageWidth, imageHeight
if x in range(1,imageWidth) and y in range(1,imageHeight):
if im.getpixel((x,y)) == 0:
im.putpixel((x,y), 255)
fillWhite(im,x+1,y)
fillWhite(im,x,y+1)
fillWhite(im,1,1)
Im PIL-Handbuch bin ich nicht fündig geworden!
Wäre dankbar für Vorschläge und Ideen.
Gruß, Martin