2012-10-06 37 views
4

當試圖做的PIL​​ Python庫如下:圖像轉換PIL中,PGM文件錯誤

Image.open('Apple.gif').save('Apple.pgm') 

的代碼失敗:

Traceback (most recent call last): 
    File "/home/eran/.eclipse/org.eclipse.platform_3.7.0_155965261/plugins/org.python.pydev_2.6.0.2012062818/pysrc/pydevd_comm.py", line 765, in doIt 
    result = pydevd_vars.evaluateExpression(self.thread_id, self.frame_id, self.expression, self.doExec) 
    File "/home/eran/.eclipse/org.eclipse.platform_3.7.0_155965261/plugins/org.python.pydev_2.6.0.2012062818/pysrc/pydevd_vars.py", line 376, in evaluateExpression 
    result = eval(compiled, updated_globals, frame.f_locals) 
    File "<string>", line 1, in <module> 
    File "/usr/lib/python2.7/dist-packages/PIL/Image.py", line 1439, in save 
    save_handler(self, fp, filename) 
    File "/usr/lib/python2.7/dist-packages/PIL/PpmImagePlugin.py", line 114, in _save 
    raise IOError, "cannot write mode %s as PPM" % im.mode 
IOError: cannot write mode P as PPM 

代碼工作正常轉換爲BMP ,但JPG也失敗了。 奇怪的是,一個不同的文件(JPG到PGM),工作正常。

其他格式轉換。那就是:

Image.open('Apple.gif').save('Apple.bmp') 

作品。

任何想法,爲什麼?

+0

我認爲這可以幫助在這裏:http://stackoverflow.com/questions/10269099/pil-convert-gif-frames-to-jpg – fecub

回答

11

您需要將圖像轉換爲RGB模式才能完成此項工作。

im = Image.open('Apple.gif') 
im = im.convert('RGB') 
im.save('Apple.pgm') 
+1

'PGM'是一個8位灰度PIL([模式「 L'](http://www.pythonware.com/library/pil/handbook/concepts.htm)格式),而GIF是8位調色板格式(模式'P'),所以你需要和中間轉換以一種通用的格式。 –

+0

@Pedro:是的,謝謝你提供的解釋。 – Junuxx