文章目录
- 前言
- 项目场景
- 项目素材
- 1.jpg
- 2.jpg
- 3.jpg
- 项目代码
- 1. 引入库
- 2. 读取存储图片的文件夹
- 3. 获取文件夹中所有的.jpg结尾的图片文件名
- 4. 按照文件名排序
- 5. 读取所有图片并拼接成动图
- 6. 保存动图
- 问题描述
- 原因分析
- 解决方案
- 最终效果
前言
大家好,我是空空star,本篇给大家分享一下Moviepy模块之多图拼接为一个动图。
本篇使用的moviepy版本如下:
Name: moviepy
Version: 1.0.3
项目场景
使用moviepy将多个图片做成一个动图。
项目素材
1.jpg

2.jpg

3.jpg

项目代码
1. 引入库
from moviepy.editor import ImageSequenceClip
import os
2. 读取存储图片的文件夹
image_folder = '/Users/kkstar/Downloads/video/pic/'
3. 获取文件夹中所有的.jpg结尾的图片文件名
images = [img for img in os.listdir(image_folder) if img.endswith('.jpg')]
4. 按照文件名排序
images.sort(key=lambda x: int(x.split('.')[0]))
5. 读取所有图片并拼接成动图
clip = ImageSequenceClip([os.path.join(image_folder, img) for img in images], fps=1)
6. 保存动图
clip.write_gif(image_folder+"output.gif")
问题描述
运行报错:
Exception: Moviepy: ImageSequenceClip requires all images to be the same size
原因分析
ImageSequenceClip要求所有的图像都具有相同的尺寸,但是在导入图像时可能出现尺寸不一致的情况,导致无法创建ImageSequenceClip。
解决方案
将所有的图像都调整到相同的尺寸后再导入。
最终效果
