zoukankan      html  css  js  c++  java
  • 实用的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')

      效果如下:

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

      

  • 相关阅读:
    UVa 1349 (二分图最小权完美匹配) Optimal Bus Route Design
    UVa 1658 (拆点法 最小费用流) Admiral
    UVa 11082 (网络流建模) Matrix Decompressing
    UVa 753 (二分图最大匹配) A Plug for UNIX
    UVa 1451 (数形结合 单调栈) Average
    UVa 1471 (LIS变形) Defense Lines
    UVa 11572 (滑动窗口) Unique Snowflakes
    UVa 1606 (极角排序) Amphiphilic Carbon Molecules
    UVa 11054 Wine trading in Gergovia
    UVa 140 (枚举排列) Bandwidth
  • 原文地址:https://www.cnblogs.com/feffery/p/11310410.html
Copyright © 2011-2022 走看看