2015-02-13 13 views
12

Tôi khá mới với python và gặp sự cố với chức năng save của ngã ba Gối của PIL.'Tiện ích mở rộng không xác định' trong chức năng lưu PIL do mảng EXTENSION trống

Với ví dụ tối thiểu này

import Image 

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

tôi nhận được lỗi sau:

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

Các dòng tương ứng trong save chức năng là

preinit() 

[...] 

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

tôi nhìn vào mảng EXTENSION và phát hiện ra rằng nó trống, mặc dù nó nên được khởi tạo trong preinit() bằng ví dụ from PIL import PngImagePlugin. PngImagePlugin.py gọi Image.register_extension("PNG", ".png"). Xem mảng bên trong hàm này hoặc bên trong PngImagePlugin nó thực sự được lấp đầy với phần mở rộng tệp.

Đặt print(EXTENSION) ngay trước khối try-except-block, tuy nhiên sẽ hiển thị mảng trống EXTENSION.

(Cùng một vấn đề với SAVE mảng một vài dòng xuống trong save chức năng.)

Any help is appreciated.

EDIT: Gần đây tôi đã nâng cấp từ OpenSuse 13.1. đến 13.2. Nó hoạt động tốt trong 13.1 nhưng không hoạt động trong 13.2.

+0

này làm việc cho tôi. Trong trường hợp của bạn, hãy thử sử dụng 'im.save (" image.png ", format = 'PNG')' và xem nó có phù hợp với bạn hay không. –

+0

Điều này không hoạt động. Phần tương ứng được bỏ qua trong Image.py nhưng sau đó tôi có cùng lỗi với mảng 'SAVE':' File "/usr/lib64/python2.7/site-packages/PIL/Image.py", dòng 1674, trong tiết kiệm save_handler = SAVE [format.upper()] # định dạng không xác định KeyError: 'PNG''' – DAH

Trả lời

9

Bạn cần phải viết những dòng này thay vì:

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

Cảm ơn, điều này đã làm việc! – zega

Các vấn đề liên quan