2015-02-13 6 views
12

Jestem raczej nowy w python i mam problem z funkcją save widelca Pillow w PIL."Nieznane rozszerzenie" w funkcji zapisu PIL z powodu pustej tablicy EXTENSION

Dzięki tej minimalnej przykład

import Image 

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

pojawia się następujący błąd:

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

Odpowiednie linie w funkcji save

preinit() 

[...] 

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

Spojrzałem na tablicy EXTENSION i wykrył, że jest pusty, chociaż powinien być zainicjowane w preinit() przez na przykład from PIL import PngImagePlugin. PngImagePlugin.py dzwoni Image.register_extension("PNG", ".png"). Oglądanie tablicy wewnątrz tej funkcji lub wewnątrz PngImagePlugin jest rzeczywiście wypełnione rozszerzeniami plików.

Umieszczenie print(EXTENSION) tuż przed blokiem try-except jednak pokazuje pustą tablicę EXTENSION.

(ten sam problem z SAVE tablicy kilka linii w dół w funkcji save.)

Każda pomoc jest mile widziana.

EDYCJA: Niedawno zaktualizowałem z OpenSuse 13.1. do 13,2. Działało dobrze w 13.1, ale nie w 13.2.

+0

Działa to dla mnie. W twoim przypadku spróbuj użyć 'im.save (" image.png ", format = 'PNG')' i sprawdź, czy to działa. –

+0

To też nie działa. Odpowiednia sekcja jest pomijana w Image.py, ale potem mam ten sam błąd w tablicy "SAVE": 'File" /usr/lib64/python2.7/site-packages/PIL/Image.py ", wiersz 1674, w zapisz save_handler = ZAPISZ [format.upper()] # nieznany format KeyError: 'PNG''' – DAH

Odpowiedz

9

Musisz napisać ten zamiast:

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

Dzięki, to działało! – zega