2012-04-03 63 views
7

我想使用python和PIL或PythonMagick更改GIF动画图像的大小。我找不到解决方案。 PIL和缩略图方法适用于jpg和png,但不适用于gif。 ImageMagick有命令mogrify/convert-resize'1280x1024>',但我找不到文档,我不知道如何用pythonmagick做到这一点。调整GIF动画,pil/imagemagick,python

有谁知道解决方案?

在我使用OS /子进程和转换最坏的情况下; -S

感谢。

+1

我会推荐你​​在此期间做到这一点 - 使用子进程和转换。 Pythonmagic遭受这种缺乏适当维护的困扰 - 而PIL只支持读取动画GIF,而没有其他。让问题保持开放 - 也许有人用psmaped来做Pythonmagic的调整大小显示出来。 – jsbueno 2012-04-03 14:22:10

回答

12

您可以使用PIL和images2gif,这个blog page上连接的基于PIL的短模块,以及可用的here。用于处理这个rose.gif的代码如下。我将images2gif.readGif'读为numpy数组'属性设置为false以获取PIL图像列表,以便我可以使用PIL thumbnail函数。

Orignial:rose加工:small rose

import Image 
import images2gif 

frames = images2gif.readGif("rose.gif",False) 
for frame in frames: 
    frame.thumbnail((100,100), Image.ANTIALIAS) 

images2gif.writeGif('rose99.gif', frames) 

我不知道如何保留透明度,我尝试这样做都失败了(到目前为止)。

+5

如何保存动画速度? – 2012-09-05 16:09:50

+2

根据http://www.velocityreviews.com/forums/t354000-pil-and-transparent-gifs.html,你必须自己处理透明度,透明度= im.info [“transparency”]; ...; out.save(“out.gif”,transparency = transparency) – Collin 2012-09-22 03:19:03

3

一些了不起的人发images2gif.py的更新版本,占透明度:

https://bitbucket.org/bench/images2gif.py/overview

还有一些文物,但它的方式比原来的更好!

+3

第一次尝试失败 - 调色板列表看起来像[None,None .. None]并尝试将其写入新文件。不幸的是,当一段代码不包含测试时,这就是你所期望的。原始的一个至少给出了一个有意义的消息:'RuntimeError:无法获得调色板。也许你应该试试imageio。“ – 2015-07-08 13:54:22