私はpython=の初心者で、PILのPillow forkのsave
関数に問題があります。
この最小限の例で
_import Image
im = Image.new("RGB", (200, 30), "#ddd")
im.save("image.png")
_
次のエラーが発生します。
_File "/usr/lib64/python2.7/site-packages/PIL/Image.py", line 1667, in save
raise KeyError(ext) # unknown extension
KeyError: '.png'
_
save
関数の対応する行は次のとおりです。
_preinit()
[...]
try:
format = EXTENSION[ext]
except KeyError:
raise KeyError(ext) # unknown extension
_
EXTENSION
配列を調べたところ、空であることがわかりましたが、_preinit()
では、たとえば_from PIL import PngImagePlugin
_によって初期化する必要があります。 _PngImagePlugin.py
_はImage.register_extension("PNG", ".png")
を呼び出します。この関数内またはPngImagePlugin
内の配列を監視すると、ファイル拡張子が実際に含まれます。
ただし、try-except-blockの直前にprint(EXTENSION)
を置くと、空のEXTENSION
配列が表示されます。
(SAVE
配列と同じ問題がsave
関数の数行下にあります。)
どんな助けでもありがたいです。
編集:OpenSuse 13.1から最近アップグレードしました。 13.2に13.1ではうまくいきましたが、13.2ではうまくいきませんでした。
代わりにこれを書く必要があります:
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")