4

PIL python ライブラリで次のことを実行しようとすると、次のようになります。

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

動作します。

理由はありますか?

4

1 に答える 1

13

RGBこれを機能させるには、画像をモードに変換する必要があります。

im = Image.open('Apple.gif')
im = im.convert('RGB')
im.save('Apple.pgm')
于 2012-10-06T10:46:27.083 に答える