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.
Bananasplit
User
Beiträge: 10
Registriert: Sonntag 11. Februar 2018, 10:18

PIL OSError [Errno 22] invalid Arguement

Beitragvon Bananasplit » 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:
  1. while (xs,ys) != (xe,ye):
  2.         if xs > xe:
  3.             if ys > ye:
  4.                 w = 100
  5.                 h = 100
  6.                 while w != 0:
  7.                     while h != 0:
  8.                         if Bild.getpixel((xs-w, ys-w)) == weiss:
  9.                             wc = wc + 1
  10.                         else:
  11.                             sc = sc + 1
  12.                         h = h - 1
  13.                     h = 100
  14.                     w = w - 1
  15.                 if wc == 0:
  16.                     inf = 100
  17.                     while inf != 0:
  18.                         xs = xs - 1
  19.                         ys = ys - 1
  20.                         Bild.putpixel ( (xs,ys), grun)
  21.                         inf = inf -1
  22.                         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: 7456
Registriert: Sonntag 21. Oktober 2012, 17:20

Re: PIL OSError [Errno 22] invalid Arguement

Beitragvon Sirius3 » 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.
  1. mask = pixels[ys-100:ys, xs-100:xs] == weiss
  2. wc = mask.sum()
  3. sc = (~mask).sum()

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder