一、簡介
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')
效果如下:
以上就是本文的全部內容,如有筆誤望指出!