当我尝试使用 fraxel 的答案时
http://stackoverflow.com/questions/10269099/pil-convert-gif-frames-to-jpg
在图像上http://24.media.tumblr.com/fffcc2d8e980fbba4f87d51ed4916b87/tumblr_mh8uaqMo2I1rkp3avo2_250.gif
我得到了一些数据,但对于一些数据,我得到了丢失的数据,例如


为了显示这些,我使用 imagemagick display foo* ,然后使用空间在图像中移动......是否有可能 imagemagick 读取错误?
编辑:
即使使用转换然后通过显示,display foo* 我也会得到以下信息

那么这是否是gif的一个特点呢?
imagemagick image-processing gif tumblr python-imaging-library
尝试在PIL python库中执行以下操作时:
Image.open('Apple.gif').save('Apple.pgm')
Run Code Online (Sandbox Code Playgroud)
代码失败了:
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
Run Code Online (Sandbox Code Playgroud)
代码可以正常转换为BMP,但JPG也失败了.奇怪的是,一个不同的文件(JPG到PGM),工作正常.
其他格式转换.那是:
Image.open('Apple.gif').save('Apple.bmp')
Run Code Online (Sandbox Code Playgroud)
作品.
知道为什么吗?
有时,当打开GIF并将单独的帧保存到文件时,框架的形状会很糟糕.所有的GIF都不会发生这种情况,但是在许多帧中会发生这种情况.
例
这是原来的GIF
这是第一帧(好了)
这是第二帧(拧出来的)
我用两个不同的python模块尝试了同样的事情.第一个PIL
from PIL import Image
img = Image.open('pigs.gif')
counter = 0
collection = []
while True:
try:
img.save('original%d.gif' % counter)
img.seek(img.tell()+1)
counter += 1
except EOFError:
break
Run Code Online (Sandbox Code Playgroud)
然后魔杖:
from wand.image import Image
img = Image(filename='pigs.gif')
for i in range(len(img.sequence)):
img2 = Image(img.sequence[i])
img2.save(filename='original%d.gif' % i)
Run Code Online (Sandbox Code Playgroud)
两个模块也是如此.
这是怎么回事?
PS:我发现其他人有相同的症状.然而,这些解决方案(两者都围绕PIL的错误,当你执行.seek()时删除调色板)并没有解决我的问题: Python:将GIF帧转换为PNG 和 PIL - 将GIF帧转换为JPG