• 实用的Python(2)利用Python制作gif动图


    一、简介

      moviepy是一个专门用于视频剪辑制作的模块,可以自动化完成很多繁琐的视频剪辑处理工作,除了处理视频数据之外,moviepy中还内置了可以制作gif动图的功能,通过使用moviepy.editor中的ImageSequenceClip,可以以自动化的方式批量生成指定参数要求的gif动图,本文就将针对ImageSequenceClip的使用展开介绍。

    二、利用ImageSequenceClip()合成动图

      ImageSequenceClip()中的主要参数如下:

    sequence:这个参数控制用于制作gif动图的图片,有三种传入形式:

      1、传入字符串:当传入字符串时,这个字符串表示的是存放指定一系列图片的文件夹(只能存在所需图片文件)路径

      2、传入列表:当传入列表时,这个列表按顺序存放制作动图所需的图片文件名称

      3、传入元素为numpy数组的列表:这种方式下所传入列表中每个元素是对应一张图片的numpy数组,不太推荐这种方式是因为需要将所需图片共同读入内存中,对于所需图片数量较多的时候对内存可能会造成一定的压力

    fps:这个参数用于控制gif动图的帧率,譬如传入fps=1时表示每秒切换一张动图

      下面我们通过一个完整的例子来进行演示,首先我们新建一个文件夹并在里面放入一张空白图片seed.png,接下来我们利用PIL中的ImageDraw向空白图像上绘制数字:

    from PIL import ImageFont,Image,ImageDraw
    import os
    
    os.chdir(r'C:UsershpDesktopgif示例')
    
    #设置字体和字号大小
    font = ImageFont.truetype('simhei.ttf',200)
    
    for idx in tqdm_notebook([i for i in range(1,11)][::-1]):
    
        im1=Image.open('seed.png')
    
        #在图片上添加文字
        draw = ImageDraw.Draw(im1)
        draw.text((200,150),str(idx),(0,0,0),font)
    
        draw = ImageDraw.Draw(im1)
    
        #保存图片
        im1.save('./imgs/'+str(idx)+".png")

      得到如下图片:

      接下来我们来制作一个简单的倒计时gif:

    from moviepy.editor import ImageSequenceClip
    img_names = ['./imgs/'+str(i)+'.png' for i in range(1,11)]
    img_names.reverse()
    clip = ImageSequenceClip(img_names,fps=1)
    clip.write_gif('demo.gif')

      效果如下:

      以上就是本文的全部内容,如有笔误望指出! 

      

  • 相关阅读:
    WM_PAINT消息详解,使用InvalidateRect或InvalidateRgn函数刻意产生WM_PAINT消息(WIN7里有变化,“调整视觉效果”,将“启用桌面组合”去掉)
    delphi 大文件的读写 使用 MapviewOffile
    Delphi的子类化控件消息, 消息子类化
    wParam与lParam的区别
    为什么使用DLL
    大数据分包算法
    JSON如何序列图片
    AngularJs学习
    设计模式解读
    js模块化编程总结
  • 原文地址:https://www.cnblogs.com/feffery/p/11310410.html
Copyright © 2020-2023  润新知