调整 GIF 动画大小,使用 pil/imagemagick 和 python。

10
我想使用Python和PIL或PythonMagick更改GIF动画图像的大小,但是我找不到解决方案。对于jpg和png文件,PIL和缩略图方法可以工作,但是对于gif则无法正常工作。ImageMagick有命令mogrify/convert -resize '1280x1024>',但我找不到文档,也不知道如何使用PythonMagick实现它。
有人知道解决方案吗?
在最坏的情况下,我会使用os/subprocess和convert;-S
谢谢。

1
我建议你在此期间使用subprocess和convert。Pythonmagic缺乏适当的维护,而PIL仅支持读取动画GIF,没有其他功能。保留问题的开放性 - 也许会有人用Pythonmagic展示出psnipped来调整大小。 - jsbueno
2个回答

13
你可以使用PIL和images2gif,这是一个基于PIL的简短模块,链接在这个博客页面上,并且可以在这里获取。下面是处理rose.gif的代码。我将images2gif.readGif的“读取为numpy数组”属性设置为false以获得PIL图片列表,以便使用PIL的thumbnail函数。
原始: 玫瑰 处理后: 小玫瑰
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)

我不确定如何保留透明度,我的尝试都失败了(到目前为止)。



4

3
首次尝试失败-调色板列表看起来像[None,None .. None],并尝试将其写入新文件。遗憾的是,当代码片段没有测试时,这就是你所期望发生的事情。原始代码至少给出了一个有意义的消息:“运行时错误:无法获取调色板。也许你应该尝试使用imageio。” - Mihnea Simian

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