PIL中的图像转换,pgm文件错误

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

工作正常。

有什么想法吗?


我认为这个链接可以帮助你:https://dev59.com/c2kv5IYBdhLWcg3w6k5Q - fecub
1个回答

13

你需要将图像转换为 RGB 模式才能使其正常工作。

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

1
PGM是8位灰度PIL(模式'L')格式,而GIF是8位调色板格式(模式'P'),因此需要进行中间转换以获得共同的格式。 - Pedro Romano

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接