'未知的扩展程序'由于空的EXTENSION数组导致PIL的保存功能

时间:2015-02-13 15:50:55

标签: python python-imaging-library pillow

我对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 PngImagePluginPngImagePlugin.py来电Image.register_extension("PNG", ".png")。观察此函数内部或PngImagePlugin内部的数组确实填充了文件扩展名。

在try-except-block之前放置print(EXTENSION)会显示一个空的EXTENSION数组。

(与SAVE数组中的save数组中的几行相同的问题。)

感谢任何帮助。

编辑:我最近从OpenSuse 13.1升级。到13.2。它在13.1中运行良好,但在13.2中没有运行。

1 个答案:

答案 0 :(得分:12)

你需要写这个:

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")