调整 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 的大小的主要内容,如果未能解决你的问题,请参考以下文章