这是个视频转音频以及图片大小转换的小程序。转换后的文件会保存在原文件的目录下。
另外需要安装库moviepy和pillow
from moviepy.editor import *#pip install moviepy
from tkinter import *
from tkinter import ttk
from tkinter import filedialog
from tkinter import messagebox
import os
from PIL import Image#pip install pillow
import os.path
def picture_change():
file_path=filedialog.askopenfilename(title='请选择文件', filetypes=[('jpg', '*.jpg'),('png', '*.png'),('All Files', '*')],initialdir='C:\\',multiple=True)
width=int(list[1].get())
height=int(list[2].get())
for i in file_path:
filename = os.path.split(i)
outdir=filename[0]+'/'
try:
img=Image.open(i)
new_img=img.resize((width,height),Image.BILINEAR)
new_img.save(os.path.join(outdir,os.path.basename(i)))
except:
messagebox.showinfo(title='错误', message='转换失败,请检查格式')
break
def movie_change():
file_path=filedialog.askopenfilename(title='请选择文件', filetypes=[('mp4', '*.mp4'),('wmv', '*.wmv'),('avi', '*.avi'),('mpeg', '*.mpeg'),('mov', '*.mov'),('ogv', '*.ogv'),('All Files', '*')],initialdir='C:\\',multiple=True)
for i in file_path:
try:
video = VideoFileClip(i)
except:
messagebox.showinfo(title='错误', message='文件格式错误')
filename = os.path.split(i)
extension = os.path.splitext(i)
name = filename[1].replace(extension[1],"")
audio = video.audio
audio.write_audiofile(filename[0]+'/'+name+'.'+list[0].get())
list = {}
root = Tk()
root.title("转换器")
root.geometry("290x250")
root.resizable(width=False, height=False)
#视频转换器**************************
fm=Frame(root)
Button(fm,text='打开视频文件',command=movie_change,activeforeground="white",activebackground='gray',bg='white',fg='black',height=2,width=12,wraplength=100).pack(side=LEFT,padx=10)
fm1=Frame(fm)
Label(fm1, text="请选择转换格式", font=("Arial",12), width=100, height=1).pack(side=TOP)
list[0]=ttk.Combobox(fm1,textvariable=StringVar(),font=('Arial', 15),width=5)
list[0]["values"]=("mp3","wav")
list[0].current(0)
list[0].pack(side=TOP,pady=20)
fm1.pack(side=LEFT,padx=30)
fm.pack(side=TOP,pady=20)
#图片大小转换器**************************
fm=Frame(root)
Button(fm,text='打开图片文件',command=picture_change,activeforeground="white",activebackground='gray',bg='white',fg='black',height=2,width=12,wraplength=100).pack(side=LEFT,padx=10)
fm1=Frame(fm)
Label(fm1, text="请输入大小", font=("Arial",12), width=100, height=1).pack(side=TOP)
fm2=Frame(fm1)
list[1]=Entry(fm2, show=None, font=('Arial', 14),width=4)
list[1].insert(0, '500')#插入默认值
list[1].pack(side=LEFT)
Label(fm2, text="X", font=("Arial",12), width=2, height=1).pack(side=LEFT)
list[2]=Entry(fm2, show=None, font=('Arial', 14),width=4)
list[2].insert(0, '500')#插入默认值
list[2].pack(side=LEFT)
fm2.pack(side=TOP,pady=20)
fm1.pack(side=LEFT,padx=30)
fm.pack(side=TOP)
root.mainloop()