首页 > 解决方案 > 如何在 Python 中从不同大小的图像(.png)创建 gif

问题描述

我正在使用 ImageIO 创建一个 .gif 文件。我有 3 个不同大小的 .png 图像:

(width, length, rgb)
(2520, 1800, 3)
(3840, 1800, 3)
(1800, 1800, 3)

可见第二张图像太宽并且超出了框架。是否可以固定 .gif 的帧大小,以便它可以容纳所有三个图像的尺寸?

目前,它将第一个图像的尺寸分配给 gif 文件。

这是代码:

images = []
for filename in sorted(image_files):
    image = imageio.imread(filename)
    images.append(image)
imageio.mimsave('file.gif',images, duration=1)

标签: pythongifpython-imageio

解决方案


要从不同大小的图像创建 gif,我们可以使用“moviepy.editor”并通过传递参数 method="compose" 连接图像。

method="compose" 保留每个图像(帧)的尺寸,并创建一个具有最大高度和宽度的帧的 gif 文件。

这是代码:

def make_gif():
        input_png_list = glob.glob(infile+'/*.png')
        input_png_list.sort()
        clips = [mpy.ImageClip(i).set_duration(self.duration)
                 for i in input_png_list]
        concat_clip = mpy.concatenate_videoclips(clips, method="compose")
        concat_clip.write_gif("test.gif", fps=2)

推荐阅读