2015-02-13 14 views
12

Ich bin ziemlich neu zu Python und habe ein Problem mit der save Funktion der Kissengabel von PIL.'Unbekannte Erweiterung' in Speicherfunktion von PIL wegen leerer EXTENSION array

Mit diesem minimal Beispiel

import Image 

im = Image.new("RGB", (200, 30), "#ddd") 
im.save("image.png") 

ich die folgenden Fehler:

File "/usr/lib64/python2.7/site-packages/PIL/Image.py", line 1667, in save 
    raise KeyError(ext) # unknown extension 
KeyError: '.png' 

Die entsprechenden Zeilen in der save Funktion sind

preinit() 

[...] 

try: 
    format = EXTENSION[ext] 
except KeyError: 
    raise KeyError(ext) # unknown extension 

I am EXTENSION Array aussehen und festgestellt, dass es leer ist, obwohl es sollte B. in preinit() durch zum Beispiel from PIL import PngImagePlugin initialisiert werden. PngImagePlugin.py Anrufe Image.register_extension("PNG", ".png"). Beobachten Sie das Array innerhalb dieser Funktion oder innerhalb PngImagePlugin ist es in der Tat mit Dateierweiterungen gefüllt.

Setzen Sie print(EXTENSION) direkt vor dem try-except-Block zeigt jedoch eine leere EXTENSION Array.

(gleiches Problem mit dem SAVE Array ein paar Zeilen nach unten in der save Funktion.)

Jede Hilfe sehr geschätzt wird.

EDIT: Ich habe vor kurzem von OpenSuse 13.1 aufgerüstet. bis 13.2. Es funktionierte gut in 13.1, aber nicht in 13.2.

+0

Dies funktioniert für mich. Versuchen Sie in Ihrem Fall 'im.save (" image.png ", format = 'PNG')' zu verwenden und sehen Sie, ob das für Sie funktioniert. –

+0

Dies funktioniert auch nicht. Der entsprechende Abschnitt wird in Image.py übersprungen, aber dann habe ich den gleichen Fehler mit dem 'SAVE' Array:' File '/usr/lib64/python2.7/site-packages/PIL/Image.py ", Zeile 1674, in Speichern save_handler = SPEICHERN [format.upper()] # unbekanntes Format KeyError: 'PNG''' – DAH

Antwort

9

Sie müssen dies stattdessen schreiben:

from PIL import Image # Notice the 'from PIL' at the start of the line 

im = Image.new("RGB", (200, 30), "#ddd") 
im.save("image.png") 
+0

Danke, das hat funktioniert! – zega