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)