python - 如何在 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)
解决方案
要从不同大小的图像创建 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)
推荐阅读
- tensorflow - 运行“tfio.experimental.image.decode_tiff(...)”显示“死内核”
- python - Django中每个客户的订单价值计数和总和(通过迭代)
- c# - 如何在acumatica中添加线和分割线
- python - 根据多列值的条件,使用索引和广播一次覆盖多列中的值
- android - 打开颤振活动并从android native导航到路由名称
- oracle-nosql - Oracle NoSQL 是否提供允许为列生成系统时间戳的功能
- google-app-engine - 如何每天自动重启一个 GAE 应用引擎版本?
- java - 如何在不删除春季实体的情况下删除多对多关系中的引用?
- jenkins - 无法在 Tomcat 上启动 Jenkins
- c++ - 使用 cv::Filestorage 读/写 Eigen::Matrix