在之前的文章中,介绍了使用imageio生成gif动态图片,十分方便,简单,容易上手。
我发现pillow这个库也可以生成gif动态图片。
1.需求
使用pillow将一下4张图合成gif:
2.代码
# -*- coding: utf-8 -*-
"""
Created on Fri Nov 4 16:32:32 2022
@author: augustqi
"""
from PIL import Image
import os
# 静态图片存放路径,注意路径,否则找不到路径
imgs_path = "imgs"
# 遍历imgs_path中的图片
file_list = os.listdir(imgs_path)
# 打开第一张图片
img0 = Image.open(os.path.join(imgs_path, file_list[0]))
# 转化的GIF图片名称
save_name_gif = "generate_pil.gif"
# fps 就是图片切换的频率,越大越快。也可以使用duration参数来控制,表示每帧间隔,单位s
# fps = 1
duratio = 20000
# 播放次数,0表示循环播放,1表示播放1次,2表示播放2次,以此类推
loop = 0
# 存放图片的列表
pics_list = []
# 遍历filenames,使用imageio读取后存入pics_list
for file in file_list[1:]:
im = Image.open(os.path.join(imgs_path, file))
pics_list.append(im)
# 生成gif
img0.save(save_name_gif, save_all=True, append_images=pics_list, duratio=duratio, loop=0)
效果图:
在运行代码的过程中,我发现duratio的大小无法控制gif动图的播放速度,目前还没找到原因。。。(找到原因再更新)播放的太快了,我已经晕了。。。
参考资料: