PIL geht nicht mehr

Django, Flask, Bottle, WSGI, CGI…
Antworten
Beyond
User
Beiträge: 227
Registriert: Freitag 6. September 2002, 19:06
Kontaktdaten:

Habe ich schon bei dzug gestellt aber dort fand wohl keiner eine Antwort.
Für Tips wäre ich echt dankbar!

Bei mir ist gestern ein merkwürdiges Problem mit Zope-2.4.1-linux2-x86 und der Python Image Library aufgetreten.

Ich habe folgenden Code geschrieben, um ein Bild dynamisch zu erzeugen (unrelevante Teile gekürzt):

Code: Alles auswählen

   def getPic(self, REQUEST=None):
       """ bla """
       img= Image.new('RGB', (400,400), (255,200,0))
       draw = ImageDraw.Draw(img)
       for coordR in self.coords:
           draw.point(coordR, fill=128)
       RESPONSE= REQUEST.RESPONSE
       img.save(RESPONSE, 'PNG')       # Suddenly broken ???
       return RESPONSE
Dieser hat auch zunächst gut funktioniert. Aber auf einmal (ich hatte glaub' ich mehrfach hinterander auf das Bild geklickt -> es werden Punkte hinzugefügt) erhielt ich eine Fehlermeldung des Browsers: "The image ... cannot be displayed because it contains errors". Tatsächlich ist das Bild bur noch 33 Bytes groß und enthält wohl noch Teile eines PNG-Headers.

Ändere ich den Code (diese Version war meine erste -- sie erschien mir äußerst failsafe und funktionierte ebenfalls):

Code: Alles auswählen

   def getPic(self, REQUEST=None):
       """ bla """
       img= Image.new('RGB', (400,400), (255,200,0))
       draw = ImageDraw.Draw(img)
       for coordR in self.coords:
           draw.point(coordR, fill=128)
       RESPONSE= REQUEST.RESPONSE
       img.save('/tmp/h.jpg')  # .png -> gleicher Effekt
       RESPONSE.write(open('/tmp/h.jpg').read())
       return RESPONSE
erhalte ich eine Exception:

Code: Alles auswählen

*Error Type: AttributeError*
*Error Value: 'ImageFile' module has no attribute '_save'
Traceback (innermost last):
 File /opt/Zope-2.4.1-linux2-x86/lib/python/ZPublisher/Publish.py, line 223, in publish_module
 File /opt/Zope-2.4.1-linux2-x86/lib/python/ZPublisher/Publish.py, line 187, in publish
 File /opt/Zope-2.4.1-linux2-x86/lib/python/Zope/__init__.py, line 226, in zpublisher_exception_hook
   (Object: h3)
 File /opt/Zope-2.4.1-linux2-x86/lib/python/ZPublisher/Publish.py, line 171, in publish
 File /opt/Zope-2.4.1-linux2-x86/lib/python/ZPublisher/mapply.py, line 160, in mapply
   (Object: getPic)
 File /opt/Zope-2.4.1-linux2-x86/lib/python/ZPublisher/Publish.py, line 112, in call_object
   (Object: getPic)
 File /opt/Zope-2.4.1-linux2-x86/lib/python/Products/Hauptachsen/HauptachsenMain.py, line 96, in getPic
   (Object: h3)
 File /opt/Zope-2.4.1-linux2-x86/lib/python2.1/site-packages/PIL/Image.py, line 667, in save
 File /opt/Zope-2.4.1-linux2-x86/lib/python2.1/site-packages/PIL/JpegImagePlugin.py, line 307, in _save
AttributeError: (see above)
*Das ich auch ungewöhnlich, da man mit der PIL normalerweise durchaus .jpegs speichern kann.

Ich habe Zope neugestartet (mehrfach) und kontrolliert, daß auch keine Prozesse "überlebt" hatten. Die .pyc Dateien meines Produkts und der PIL gelöscht, um Neukompilierung zu veranlassen. Außerdem habe ich diesen Fehler mit IE und Mozilla reproduzieren können auch bei neugestarteten Client-Rechner und geleertem Cache.

Habt ihr eine Idee?
Mir ist unverständlich wie so ein Fehler auftreten kann


cu beyond
Antworten