PIL OSError [Errno 22] invalid Arguement

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Bananasplit
User
Beiträge: 10
Registriert: Sonntag 11. Februar 2018, 10:18

Freitag 16. März 2018, 14:02

Wenn ich mit PIL etwas speichern will dann gibt er mir öfters diese Fehlermeldung raus.

Hier ist der Code:

Code: Alles auswählen

while (xs,ys) != (xe,ye):
        if xs > xe:
            if ys > ye:
                w = 100
                h = 100
                while w != 0:
                    while h != 0:
                        if Bild.getpixel((xs-w, ys-w)) == weiss:
                            wc = wc + 1
                        else:
                            sc = sc + 1
                        h = h - 1
                    h = 100
                    w = w - 1
                if wc == 0:
                    inf = 100
                    while inf != 0:
                        xs = xs - 1
                        ys = ys - 1
                        Bild.putpixel ( (xs,ys), grun)
                        inf = inf -1 
                        Bild.save('Abcdefg.png')
Wie ihr sieht muss das Programm das öfters speichern. Einige Namen funktionieren keinmal, einige einmal, einige zweimal. Aber kein einziges hat drei mal funktioniert. Was blöd ist, da das die Mindestvorraussetzung ist.

Ich habe hier einige Beispielnamen:

zweimal funktioniert:

A.png
name.png

einmal:

quax.png
name.jpg
A.jpg

garnicht:

quax1.png
Abcdefg.png
_.png


Wieso ist das so?
Sirius3
User
Beiträge: 8302
Registriert: Sonntag 21. Oktober 2012, 17:20

Montag 19. März 2018, 08:05

@Bananasplit: was ist der Sinn dahinter, hunderte mal eine Datei zu überschreiben? Welches System benutzt Du? Welches Dateisystem? Netzwerk? Du solltest dringend numpy-Arrays benutzen, dann sind Deine Schleifen über einzelne Pixel einfache Matrix-Operationen.

Code: Alles auswählen

mask = pixels[ys-100:ys, xs-100:xs] == weiss
wc = mask.sum()
sc = (~mask).sum()
Antworten