【Python小工具】若干图片合并生成动态图(.gif)

相信很多学生党、上班族在日常的学习、科研、办公中总会有一些比较特殊的需求,本人作为一个理工科(非计算机相关专业)学生和大家一样。有时好不容易找到了比较心仪的工具,却发现还要收费,质量和使用的便捷性也不是完全符合心意。所以,我决定利用自己的空闲时间,对Python知识边学边用,活学活用,编写一些Python小工具,并和大家分享。

本人编程能力极其有限,若有错漏之处,希望各位大神不吝赐教!

【背景描述】

对计算机仿真结果进行后处理时,生成了一系列固定步长的云图(.jpg),希望将这些图片文件(400张)能够合并转化为动态图(.gif),以方便放到PPT中进行动态展示。

【编译环境】

Pycharm + Anaconda Python 3.9

【代码】

import imageio
from pathlib import Path

def imgs2gif(imgPaths, saveName, duration=None, loop=0, fps=None):
    """
    定义函数:生成动态图,格式为:gif
    :param imgPaths:一系列图片的路径
    :param saveName:保存gif的名字
    :param duration:gif每帧间隔,单位 秒s
    :param loop:播放次数(在不同的播放器上有所区别),0代表循环播放
    :param fps:帧率
    :return:
    """

    if fps:
        duration = 1/fps
    images = [imageio.imread(str(img_path)) for img_path in imgPaths]
    imageio.mimsave(saveName, images, "gif", duration=duration, loop=loop)

pathlist = Path(r"E:\summary").glob("*.jpg")   #需要输入的一些列图片路径

p_list = []  #新建空列表,用于存储所有用于合并生成gif的图片路径
#enumerate()函数,用于将一个可遍历的数据对象(如:列表、元组、字符串)组合为一个索引序列,同时列出数据和数据下标
for n, p in enumerate(pathlist):    #n是图片数据,p是对应n的文件名
    p_list.append(p)     #for循环,遍历所有图片,并一个一个将图片的路径存入p_lis

imgs2gif(p_list, "test.gif", 0.08, 0)   #输入图片路径,输出文件名, 每张图片的持续时间(单位 秒s), 是否循环播放(0是,1否)

你可能感兴趣的:(Python小工具,python)