實用的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:\Users\hp\Desktop\gif示例')

#設置字體和字號大小
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')

  效果如下:

  以上就是本文的全部內容,如有筆誤望指出! 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM