Python:PNG圖像生成MP4
需求
需要將多張*.PNG圖像,生成mp4格式的視頻文件。
實現
利用Python中image
庫生成*.gif
格式圖像,但是圖片未經壓縮,文件體量較大。
moviepy
庫將*.gif
格式圖像轉換為*.mp4
格式視頻文件,文件可以壓縮90%。
easygui
庫制作一個簡單的GUI界面。
清華大學Python鏡像源:https://pypi.tuna.tsinghua.edu.cn/simple/
代碼
import imageio as ig
import os
import moviepy.editor as mp
import easygui as g
def create_gif(source, name, duration):
# 生成gif的函數,原始圖片僅支持png
# source: 為png圖片列表(排好序)
# name :生成的文件名稱
# duration: 每張圖片之間的時間間隔
frames = [] # 讀入緩沖區
length = len(source)
order = 0
for img in source:
frames.append(ig.imread(img))
if order % 10 == 0:
print("讀取圖片中。。。%s/%s" % (order, length))
order += 1
ig.mimsave(name, frames, 'GIF', duration=duration)
print('已完成')
if __name__ == '__main__':
path_pic=g.diropenbox(msg='選擇圖片文件夾')
os.chdir(path_pic)
source_list = os.listdir(path='.')
piclist=g.multchoicebox(msg='選擇圖片', title=' ', choices=source_list)
name=g.enterbox(msg='輸出MP4文件名',default='movie')
create_gif(piclist, name, 0.05)
#*.gif 轉 *.mp4
clip = mp.VideoFileClip(name)
clip.write_videofile(name + '.mp4')
#刪除*.gif
os.remove(name)
g.msgbox(msg='輸出文件成功!!!', title=' ', ok_button='結束', image=None, root=None)