调整 GIF 动画、pil/imagemagick、python 的大小

Posted

技术标签:

【中文标题】调整 GIF 动画、pil/imagemagick、python 的大小【英文标题】:Resize GIF animation, pil/imagemagick, python 【发布时间】:2012-04-16 19:50:45 【问题描述】:

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

有人知道解决办法吗?

在最坏的情况下,我使用 os/subprocess 并转换;-S

谢谢。

【问题讨论】:

我建议您同时这样做 - 使用子流程并转换。 Pythonmagic 因缺乏适当的维护而受苦——PIL 仅支持读取动画 GIF,仅此而已。让问题悬而未决 - 可能会出现使用 psnipped 使用 Pythonmagic 调整大小的人。 【参考方案1】:

您可以使用 PIL 和 images2gif,这是一个基于 PIL 的简短模块,链接到此 blog page,并且可用 here。用于处理此rose.gif 的代码如下。我将images2gif.readGif 'read as numpy array' 属性设置为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)

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

【讨论】:

根据velocityreviews.com/forums/…,你必须自己处理透明度,透明度 = im.info["transparency"]; ...; out.save("out.gif", transparent=transparency)【参考方案2】:

一些了不起的人制作了一个更新版本的 images2gif.py,它解释了透明度:

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

还有一些文物,但比原作好多了!

【讨论】:

第一次尝试失败 - 调色板列表看起来像 [None, None.. None] 并尝试将其写入新文件。可悲的是,当一段代码没有附带测试时,这就是你所期望的。原来的至少给出了一个有意义的信息:RuntimeError: Cannot get palette. Maybe you should try imageio instead.

以上是关于调整 GIF 动画、pil/imagemagick、python 的大小的主要内容,如果未能解决你的问题,请参考以下文章

在不破坏动画的情况下调整动画 GIF 文件的大小

如何使用 ImageMagick (php) 调整动画 gif 的大小?

GIF动画TImage / Timage32

Imagick 制作动画 GIF 不动画?

如何用Fireworks制作经典的扫光字GIF动画

[macOS] Gif动画录制工具